CEC_Default_Factory.cpp

Go to the documentation of this file.
00001 // CEC_Default_Factory.cpp,v 1.32 2006/03/14 06:14:24 jtc Exp
00002 
00003 #include "orbsvcs/CosEvent/CEC_Default_Factory.h"
00004 #include "orbsvcs/CosEvent/CEC_MT_Dispatching.h"
00005 #include "orbsvcs/CosEvent/CEC_Reactive_Pulling_Strategy.h"
00006 #include "orbsvcs/CosEvent/CEC_ConsumerAdmin.h"
00007 #include "orbsvcs/CosEvent/CEC_SupplierAdmin.h"
00008 #include "orbsvcs/CosEvent/CEC_ProxyPushConsumer.h"
00009 #include "orbsvcs/CosEvent/CEC_ProxyPullConsumer.h"
00010 #include "orbsvcs/CosEvent/CEC_ProxyPushSupplier.h"
00011 #include "orbsvcs/CosEvent/CEC_ProxyPullSupplier.h"
00012 #include "orbsvcs/CosEvent/CEC_EventChannel.h"
00013 #include "orbsvcs/CosEvent/CEC_Reactive_ConsumerControl.h"
00014 #include "orbsvcs/CosEvent/CEC_Reactive_SupplierControl.h"
00015 
00016 #include "orbsvcs/ESF/ESF_Immediate_Changes.h"
00017 #include "orbsvcs/ESF/ESF_Delayed_Changes.h"
00018 #include "orbsvcs/ESF/ESF_Copy_On_Write.h"
00019 #include "orbsvcs/ESF/ESF_Copy_On_Read.h"
00020 #include "orbsvcs/ESF/ESF_Proxy_List.h"
00021 #include "orbsvcs/ESF/ESF_Proxy_RB_Tree.h"
00022 
00023 #include "ace/Arg_Shifter.h"
00024 #include "ace/Sched_Params.h"
00025 #include "ace/OS_NS_strings.h"
00026 #include "ace/Null_Mutex.h"
00027 #include "ace/Null_Condition.h"
00028 #include "ace/Recursive_Thread_Mutex.h"
00029 
00030 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00031 #include "orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h"
00032 #include "orbsvcs/CosEvent/CEC_TypedSupplierAdmin.h"
00033 #include "orbsvcs/CosEvent/CEC_TypedEventChannel.h"
00034 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00035 
00036 #if ! defined (__ACE_INLINE__)
00037 #include "orbsvcs/CosEvent/CEC_Default_Factory.i"
00038 #endif /* __ACE_INLINE__ */
00039 
00040 ACE_RCSID (CosEvent,
00041            CEC_Default_Factory,
00042            "CEC_Default_Factory.cpp,v 1.32 2006/03/14 06:14:24 jtc Exp")
00043 
00044 
00045 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00046 
00047 TAO_CEC_Default_Factory::~TAO_CEC_Default_Factory (void)
00048 {
00049     if (orbid_dupped_ != 0)
00050       {
00051         ACE_OS::free (orbid_);
00052       }
00053 }
00054 
00055 int
00056 TAO_CEC_Default_Factory::init_svcs (void)
00057 {
00058   return
00059     ACE_Service_Config::static_svcs ()->insert (
00060         &ace_svc_desc_TAO_CEC_Default_Factory
00061       );
00062 }
00063 
00064 int
00065 TAO_CEC_Default_Factory::parse_collection_arg (ACE_TCHAR* opt)
00066 {
00067   int collection_type = 0;
00068   int synch_type = 0;
00069   int iteration_type = 0;
00070 
00071   ACE_TCHAR* aux = 0;
00072   for (ACE_TCHAR* arg = ACE_OS::strtok_r (opt, ACE_TEXT(":"), &aux);
00073        arg != 0;
00074        arg = ACE_OS::strtok_r (0, ACE_TEXT(":"), &aux))
00075     {
00076       if (ACE_OS::strcasecmp (arg, ACE_TEXT("mt")) == 0)
00077         synch_type = 0;
00078       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("st")) == 0)
00079         synch_type = 1;
00080       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("list")) == 0)
00081         collection_type = 0;
00082       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("rb_tree")) == 0)
00083         collection_type = 1;
00084       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("immediate")) == 0)
00085         iteration_type = 0;
00086       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("copy_on_read")) == 0)
00087         iteration_type = 1;
00088       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("copy_on_write")) == 0)
00089         iteration_type = 2;
00090       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("delayed")) == 0)
00091         iteration_type = 3;
00092       else
00093         ACE_ERROR ((LM_ERROR,
00094                     "CEC_Default_Factory - "
00095                     "unknown collection modifier <%s>\n",
00096                     arg));
00097     }
00098   return (synch_type << 8) |(collection_type << 4) | iteration_type;
00099 }
00100 
00101 int
00102 TAO_CEC_Default_Factory::init (int argc, ACE_TCHAR* argv[])
00103 {
00104   ACE_Arg_Shifter arg_shifter (argc, argv);
00105 
00106   this->dispatching_threads_flags_ =
00107     THR_SCHED_DEFAULT|THR_BOUND|THR_NEW_LWP;
00108   this->dispatching_threads_priority_ =
00109     ACE_THR_PRI_OTHER_DEF;
00110 
00111   while (arg_shifter.is_anything_left ())
00112     {
00113       const ACE_TCHAR *arg = arg_shifter.get_current ();
00114 
00115       if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECDispatching")) == 0)
00116         {
00117           arg_shifter.consume_arg ();
00118 
00119           if (arg_shifter.is_parameter_next ())
00120             {
00121               const ACE_TCHAR* opt = arg_shifter.get_current ();
00122               if (ACE_OS::strcasecmp (opt, ACE_TEXT("reactive")) == 0)
00123                 {
00124                   this->dispatching_ = 0;
00125                 }
00126               else if (ACE_OS::strcasecmp (opt, ACE_TEXT("mt")) == 0)
00127                 {
00128                   this->dispatching_ = 1;
00129                 }
00130               else
00131                 {
00132                   ACE_ERROR ((LM_ERROR,
00133                               "CEC_Default_Factory - "
00134                               "unsupported dispatching <%s>\n",
00135                               opt));
00136                 }
00137               arg_shifter.consume_arg ();
00138             }
00139         }
00140 
00141       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECDispatchingThreads")) == 0)
00142         {
00143           arg_shifter.consume_arg ();
00144 
00145           if (arg_shifter.is_parameter_next ())
00146             {
00147               const ACE_TCHAR* opt = arg_shifter.get_current ();
00148               this->dispatching_threads_ = ACE_OS::atoi (opt);
00149               arg_shifter.consume_arg ();
00150             }
00151         }
00152 
00153       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECProxyConsumerCollection")) == 0)
00154         {
00155           arg_shifter.consume_arg ();
00156 
00157           if (arg_shifter.is_parameter_next ())
00158             {
00159               const ACE_TCHAR *current_arg = arg_shifter.get_current ();
00160               ACE_TCHAR *opt = ACE_OS::strdup (current_arg);
00161               this->consumer_collection_ = this->parse_collection_arg (opt);
00162               ACE_OS::free (opt);
00163               arg_shifter.consume_arg ();
00164             }
00165         }
00166 
00167       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECProxySupplierCollection")) == 0)
00168         {
00169           arg_shifter.consume_arg ();
00170 
00171           if (arg_shifter.is_parameter_next ())
00172             {
00173               const ACE_TCHAR *current_arg = arg_shifter.get_current();
00174               ACE_TCHAR* opt = ACE_OS::strdup(current_arg);
00175               this->supplier_collection_ =
00176                 this->parse_collection_arg (opt);
00177               ACE_OS::free(opt);
00178               arg_shifter.consume_arg ();
00179             }
00180         }
00181 
00182       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECProxyConsumerLock")) == 0)
00183         {
00184           arg_shifter.consume_arg ();
00185 
00186           if (arg_shifter.is_parameter_next ())
00187             {
00188               const ACE_TCHAR* opt = arg_shifter.get_current ();
00189               if (ACE_OS::strcasecmp (opt, ACE_TEXT("null")) == 0)
00190                 {
00191                   this->consumer_lock_ = 0;
00192                 }
00193               else if (ACE_OS::strcasecmp (opt, ACE_TEXT("thread")) == 0)
00194                 {
00195                   this->consumer_lock_ = 1;
00196                 }
00197               else if (ACE_OS::strcasecmp (opt, ACE_TEXT("recursive")) == 0)
00198                 {
00199                   this->consumer_lock_ = 2;
00200                 }
00201               else
00202                 {
00203                   ACE_ERROR ((LM_ERROR,
00204                               "CEC_Default_Factory - "
00205                               "unsupported consumer lock <%s>\n",
00206                               opt));
00207                 }
00208               arg_shifter.consume_arg ();
00209             }
00210         }
00211 
00212       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECProxySupplierLock")) == 0)
00213         {
00214           arg_shifter.consume_arg ();
00215 
00216           if (arg_shifter.is_parameter_next ())
00217             {
00218               const ACE_TCHAR* opt = arg_shifter.get_current ();
00219               if (ACE_OS::strcasecmp (opt, ACE_TEXT("null")) == 0)
00220                 {
00221                   this->supplier_lock_ = 0;
00222                 }
00223               else if (ACE_OS::strcasecmp (opt, ACE_TEXT("thread")) == 0)
00224                 {
00225                   this->supplier_lock_ = 1;
00226                 }
00227               else if (ACE_OS::strcasecmp (opt, ACE_TEXT("recursive")) == 0)
00228                 {
00229                   this->supplier_lock_ = 2;
00230                 }
00231               else
00232                 {
00233                   ACE_ERROR ((LM_ERROR,
00234                               "CEC_Default_Factory - "
00235                               "unsupported supplier lock <%s>\n",
00236                               opt));
00237                 }
00238               arg_shifter.consume_arg ();
00239             }
00240         }
00241 
00242       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECReactivePullingPeriod")) == 0)
00243         {
00244           arg_shifter.consume_arg ();
00245 
00246           if (arg_shifter.is_parameter_next ())
00247             {
00248               const ACE_TCHAR* opt = arg_shifter.get_current ();
00249               this->reactive_pulling_period_ = ACE_OS::atoi (opt);
00250               arg_shifter.consume_arg ();
00251             }
00252         }
00253 
00254       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECUseORBId")) == 0)
00255         {
00256           arg_shifter.consume_arg ();
00257 
00258           if (arg_shifter.is_parameter_next ())
00259             {
00260               // Copy argument for later use
00261               this->orbid_ = ACE_OS::strdup(ACE_TEXT_ALWAYS_CHAR(arg_shifter.get_current ()));
00262               orbid_dupped_ = 1;
00263               arg_shifter.consume_arg ();
00264             }
00265         }
00266 
00267       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECConsumerControl")) == 0)
00268         {
00269           arg_shifter.consume_arg ();
00270 
00271           if (arg_shifter.is_parameter_next ())
00272             {
00273               const ACE_TCHAR* opt = arg_shifter.get_current ();
00274               if (ACE_OS::strcasecmp (opt, ACE_TEXT("null")) == 0)
00275                 {
00276                   this->consumer_control_ = 0;
00277                 }
00278               else if (ACE_OS::strcasecmp (opt, ACE_TEXT("reactive")) == 0)
00279                 {
00280                   this->consumer_control_ = 1;
00281                 }
00282               else
00283                 {
00284                   ACE_ERROR ((LM_ERROR,
00285                               "CEC_Default_Factory - "
00286                               "unsupported consumer control <%s>\n",
00287                               opt));
00288                 }
00289               arg_shifter.consume_arg ();
00290             }
00291         }
00292 
00293       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECSupplierControl")) == 0)
00294         {
00295           arg_shifter.consume_arg ();
00296 
00297           if (arg_shifter.is_parameter_next ())
00298             {
00299               const ACE_TCHAR* opt = arg_shifter.get_current ();
00300               if (ACE_OS::strcasecmp (opt, ACE_TEXT("null")) == 0)
00301                 {
00302                   this->supplier_control_ = 0;
00303                 }
00304               else if (ACE_OS::strcasecmp (opt, ACE_TEXT("reactive")) == 0)
00305                 {
00306                   this->supplier_control_ = 1;
00307                 }
00308               else
00309                 {
00310                   ACE_ERROR ((LM_ERROR,
00311                               "CEC_Default_Factory - "
00312                               "unsupported supplier control <%s>\n",
00313                               opt));
00314                 }
00315               arg_shifter.consume_arg ();
00316             }
00317         }
00318 
00319       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECConsumerControlPeriod")) == 0)
00320         {
00321           arg_shifter.consume_arg ();
00322 
00323           if (arg_shifter.is_parameter_next ())
00324             {
00325               const ACE_TCHAR* opt = arg_shifter.get_current ();
00326               this->consumer_control_period_ = ACE_OS::atoi (opt);
00327               arg_shifter.consume_arg ();
00328             }
00329         }
00330 
00331       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECSupplierControlPeriod")) == 0)
00332         {
00333           arg_shifter.consume_arg ();
00334 
00335           if (arg_shifter.is_parameter_next ())
00336             {
00337               const ACE_TCHAR* opt = arg_shifter.get_current ();
00338               this->supplier_control_period_ = ACE_OS::atoi (opt);
00339               arg_shifter.consume_arg ();
00340             }
00341         }
00342 
00343       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECConsumerControlTimeout")) == 0 ||
00344                ACE_OS::strcasecmp (arg, ACE_TEXT("-CECConsumerControlRoundtripTimeout")) == 0)
00345         {
00346           arg_shifter.consume_arg ();
00347 
00348           if (arg_shifter.is_parameter_next ())
00349             {
00350               const ACE_TCHAR* opt = arg_shifter.get_current ();
00351                           unsigned long timeout_ = ACE_OS::strtoul(opt, 0, 10);
00352               this->consumer_control_timeout_.usec(timeout_);
00353               arg_shifter.consume_arg ();
00354             }
00355         }
00356 
00357       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECSupplierControlTimeout")) == 0 ||
00358                ACE_OS::strcasecmp (arg, ACE_TEXT("-CECSupplierControlRoundtripTimeout")) == 0)
00359         {
00360           arg_shifter.consume_arg ();
00361 
00362           if (arg_shifter.is_parameter_next ())
00363             {
00364               const ACE_TCHAR* opt = arg_shifter.get_current ();
00365                           unsigned long timeout_ = ACE_OS::strtoul(opt, 0, 10);
00366               this->supplier_control_timeout_.usec(timeout_);
00367               arg_shifter.consume_arg ();
00368             }
00369         }
00370 
00371       else if (ACE_OS::strcasecmp (arg, ACE_TEXT("-CECProxyDisconnectRetries")) == 0)
00372         {
00373           arg_shifter.consume_arg ();
00374 
00375           if (arg_shifter.is_parameter_next ())
00376             {
00377               const ACE_TCHAR* opt = arg_shifter.get_current ();
00378               this->proxy_disconnect_retries_ = ACE_OS::atoi (opt);
00379               arg_shifter.consume_arg ();
00380             }
00381         }
00382 
00383       else if (ACE_OS::strncmp (arg, ACE_TEXT("-CEC"), 3) == 0)
00384         {
00385           arg_shifter.consume_arg ();
00386           ACE_ERROR ((LM_ERROR,
00387                       "CEC_Default_Factory - "
00388                       "unknown option <%s>\n",
00389                       arg));
00390         }
00391       else
00392         {
00393           arg_shifter.consume_arg ();
00394           ACE_DEBUG ((LM_DEBUG,
00395                       "CEC_Default_Factory - "
00396                       "ignoring option <%s>\n",
00397                       arg));
00398         }
00399     }
00400   return 0;
00401 }
00402 
00403 int
00404 TAO_CEC_Default_Factory::fini (void)
00405 {
00406   return 0;
00407 }
00408 
00409 // ****************************************************************
00410 
00411 TAO_CEC_Dispatching*
00412 TAO_CEC_Default_Factory::create_dispatching (TAO_CEC_EventChannel *)
00413 {
00414   if (this->dispatching_ == 0)
00415     return new TAO_CEC_Reactive_Dispatching ();
00416   else if (this->dispatching_ == 1)
00417     return new TAO_CEC_MT_Dispatching (this->dispatching_threads_,
00418                                       this->dispatching_threads_flags_,
00419                                       this->dispatching_threads_priority_,
00420                                       this->dispatching_threads_force_active_);
00421   return 0;
00422 }
00423 
00424 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00425 TAO_CEC_Dispatching*
00426 TAO_CEC_Default_Factory::create_dispatching (TAO_CEC_TypedEventChannel *)
00427 {
00428   if (this->dispatching_ == 0)
00429     return new TAO_CEC_Reactive_Dispatching ();
00430   else if (this->dispatching_ == 1)
00431     return new TAO_CEC_MT_Dispatching (this->dispatching_threads_,
00432                                       this->dispatching_threads_flags_,
00433                                       this->dispatching_threads_priority_,
00434                                       this->dispatching_threads_force_active_);
00435   return 0;
00436 }
00437 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00438 
00439 void
00440 TAO_CEC_Default_Factory::destroy_dispatching (TAO_CEC_Dispatching *x)
00441 {
00442   delete x;
00443 }
00444 
00445 TAO_CEC_Pulling_Strategy*
00446 TAO_CEC_Default_Factory::create_pulling_strategy (TAO_CEC_EventChannel *ec)
00447 {
00448   if (this->pulling_strategy_ == 0)
00449     {
00450       int argc = 0;
00451       char **argv = 0;
00452       CORBA::ORB_var orb =
00453         CORBA::ORB_init (argc, argv, this->orbid_);
00454 
00455       ACE_Time_Value rate (0, this->reactive_pulling_period_);
00456       return new TAO_CEC_Reactive_Pulling_Strategy (
00457                                  rate, this->supplier_control_timeout_,
00458                                  ec, orb.in ());
00459     }
00460   return 0;
00461 }
00462 
00463 void
00464 TAO_CEC_Default_Factory::destroy_pulling_strategy (TAO_CEC_Pulling_Strategy *x)
00465 {
00466   delete x;
00467 }
00468 
00469 TAO_CEC_ConsumerAdmin*
00470 TAO_CEC_Default_Factory::create_consumer_admin (TAO_CEC_EventChannel *ec)
00471 {
00472   return new TAO_CEC_ConsumerAdmin (ec);
00473 }
00474 
00475 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00476 TAO_CEC_TypedConsumerAdmin*
00477 TAO_CEC_Default_Factory::create_consumer_admin (TAO_CEC_TypedEventChannel *ec)
00478 {
00479   return new TAO_CEC_TypedConsumerAdmin (ec);
00480 }
00481 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00482 
00483 void
00484 TAO_CEC_Default_Factory::destroy_consumer_admin (TAO_CEC_ConsumerAdmin *x)
00485 {
00486   delete x;
00487 }
00488 
00489 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00490 void
00491 TAO_CEC_Default_Factory::destroy_consumer_admin (TAO_CEC_TypedConsumerAdmin *x)
00492 {
00493   delete x;
00494 }
00495 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00496 
00497 TAO_CEC_SupplierAdmin*
00498 TAO_CEC_Default_Factory::create_supplier_admin (TAO_CEC_EventChannel *ec)
00499 {
00500   return new TAO_CEC_SupplierAdmin (ec);
00501 }
00502 
00503 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00504 TAO_CEC_TypedSupplierAdmin*
00505 TAO_CEC_Default_Factory::create_supplier_admin (TAO_CEC_TypedEventChannel *ec)
00506 {
00507   return new TAO_CEC_TypedSupplierAdmin (ec);
00508 }
00509 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00510 
00511 void
00512 TAO_CEC_Default_Factory::destroy_supplier_admin (TAO_CEC_SupplierAdmin *x)
00513 {
00514   delete x;
00515 }
00516 
00517 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00518 void
00519 TAO_CEC_Default_Factory::destroy_supplier_admin (TAO_CEC_TypedSupplierAdmin *x)
00520 {
00521   delete x;
00522 }
00523 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00524 
00525 TAO_CEC_ProxyPushSupplier*
00526 TAO_CEC_Default_Factory::create_proxy_push_supplier (TAO_CEC_EventChannel *ec)
00527 {
00528   return new TAO_CEC_ProxyPushSupplier (ec);
00529 }
00530 
00531 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00532 TAO_CEC_ProxyPushSupplier*
00533 TAO_CEC_Default_Factory::create_proxy_push_supplier (TAO_CEC_TypedEventChannel *ec)
00534 {
00535   return new TAO_CEC_ProxyPushSupplier (ec);
00536 }
00537 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00538 
00539 void
00540 TAO_CEC_Default_Factory::destroy_proxy_push_supplier (TAO_CEC_ProxyPushSupplier *x)
00541 {
00542   delete x;
00543 }
00544 
00545 TAO_CEC_ProxyPullSupplier*
00546 TAO_CEC_Default_Factory::create_proxy_pull_supplier (TAO_CEC_EventChannel *ec)
00547 {
00548   return new TAO_CEC_ProxyPullSupplier (ec);
00549 }
00550 
00551 void
00552 TAO_CEC_Default_Factory::destroy_proxy_pull_supplier (TAO_CEC_ProxyPullSupplier *x)
00553 {
00554   delete x;
00555 }
00556 
00557 TAO_CEC_ProxyPushConsumer*
00558 TAO_CEC_Default_Factory::create_proxy_push_consumer (TAO_CEC_EventChannel *ec)
00559 {
00560   return new TAO_CEC_ProxyPushConsumer (ec);
00561 }
00562 
00563 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00564 TAO_CEC_TypedProxyPushConsumer*
00565 TAO_CEC_Default_Factory::create_proxy_push_consumer (TAO_CEC_TypedEventChannel *ec)
00566 {
00567   return new TAO_CEC_TypedProxyPushConsumer (ec);
00568 }
00569 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00570 
00571 void
00572 TAO_CEC_Default_Factory::destroy_proxy_push_consumer (TAO_CEC_ProxyPushConsumer *x)
00573 {
00574   delete x;
00575 }
00576 
00577 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00578 void
00579 TAO_CEC_Default_Factory::destroy_proxy_push_consumer (TAO_CEC_TypedProxyPushConsumer *x)
00580 {
00581   delete x;
00582 }
00583 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00584 
00585 TAO_CEC_ProxyPullConsumer*
00586 TAO_CEC_Default_Factory::create_proxy_pull_consumer (TAO_CEC_EventChannel *ec)
00587 {
00588   return new TAO_CEC_ProxyPullConsumer (ec);
00589 }
00590 
00591 void
00592 TAO_CEC_Default_Factory::destroy_proxy_pull_consumer (TAO_CEC_ProxyPullConsumer *x)
00593 {
00594   delete x;
00595 }
00596 
00597 // These typedefs workaround a SunCC 4.2 bug
00598 typedef
00599     TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>::Iterator
00600     TAO_CEC_PushConsumer_List_Iterator;
00601 typedef
00602     TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>::Iterator
00603     TAO_CEC_PushConsumer_RB_Tree_Iterator;
00604 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00605 typedef
00606     TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>::Iterator
00607     TAO_CEC_TypedPushConsumer_List_Iterator;
00608 typedef
00609     TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>::Iterator
00610     TAO_CEC_TypedPushConsumer_RB_Tree_Iterator;
00611 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00612 typedef
00613     TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>::Iterator
00614     TAO_CEC_PullConsumer_List_Iterator;
00615 typedef
00616     TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>::Iterator
00617     TAO_CEC_PullConsumer_RB_Tree_Iterator;
00618 typedef
00619     TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>::Iterator
00620     TAO_CEC_PushSupplier_List_Iterator;
00621 typedef
00622     TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>::Iterator
00623     TAO_CEC_PushSupplier_RB_Tree_Iterator;
00624 typedef
00625     TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>::Iterator
00626     TAO_CEC_PullSupplier_List_Iterator;
00627 typedef
00628     TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>::Iterator
00629     TAO_CEC_PullSupplier_RB_Tree_Iterator;
00630 
00631 TAO_CEC_ProxyPushConsumer_Collection*
00632 TAO_CEC_Default_Factory::create_proxy_push_consumer_collection (TAO_CEC_EventChannel *)
00633 {
00634   if (this->consumer_collection_ == 0x000)
00635     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushConsumer,
00636       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00637       TAO_CEC_PushConsumer_List_Iterator,
00638       TAO_SYNCH_MUTEX> ();
00639   else if (this->consumer_collection_ == 0x001)
00640     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushConsumer,
00641       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00642       TAO_CEC_PushConsumer_List_Iterator,
00643       TAO_SYNCH_MUTEX> ();
00644   else if (this->consumer_collection_ == 0x002)
00645     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushConsumer,
00646       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00647       TAO_CEC_PushConsumer_List_Iterator,
00648       ACE_SYNCH> ();
00649   else if (this->consumer_collection_ == 0x003)
00650     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushConsumer,
00651       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00652       TAO_CEC_PushConsumer_List_Iterator,
00653       ACE_SYNCH> ();
00654   else if (this->consumer_collection_ == 0x010)
00655     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushConsumer,
00656       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00657       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00658       TAO_SYNCH_MUTEX> ();
00659   else if (this->consumer_collection_ == 0x011)
00660     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushConsumer,
00661       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00662       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00663       TAO_SYNCH_MUTEX> ();
00664   else if (this->consumer_collection_ == 0x012)
00665     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushConsumer,
00666       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00667       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00668       ACE_SYNCH> ();
00669   else if (this->consumer_collection_ == 0x013)
00670     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushConsumer,
00671       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00672       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00673       ACE_SYNCH> ();
00674   else if (this->consumer_collection_ == 0x100)
00675     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushConsumer,
00676       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00677       TAO_CEC_PushConsumer_List_Iterator,
00678       ACE_Null_Mutex> ();
00679   else if (this->consumer_collection_ == 0x101)
00680     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushConsumer,
00681       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00682       TAO_CEC_PushConsumer_List_Iterator,
00683       ACE_Null_Mutex> ();
00684   else if (this->consumer_collection_ == 0x102)
00685     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushConsumer,
00686       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00687       TAO_CEC_PushConsumer_List_Iterator,
00688       ACE_NULL_SYNCH> ();
00689   else if (this->consumer_collection_ == 0x103)
00690     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushConsumer,
00691       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushConsumer>,
00692       TAO_CEC_PushConsumer_List_Iterator,
00693       ACE_NULL_SYNCH> ();
00694   else if (this->consumer_collection_ == 0x110)
00695     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushConsumer,
00696       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00697       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00698       ACE_Null_Mutex> ();
00699   else if (this->consumer_collection_ == 0x111)
00700     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushConsumer,
00701       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00702       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00703       ACE_Null_Mutex> ();
00704   else if (this->consumer_collection_ == 0x112)
00705     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushConsumer,
00706       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00707       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00708       ACE_NULL_SYNCH> ();
00709   else if (this->consumer_collection_ == 0x113)
00710     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushConsumer,
00711       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushConsumer>,
00712       TAO_CEC_PushConsumer_RB_Tree_Iterator,
00713       ACE_NULL_SYNCH> ();
00714 
00715   return 0;
00716 }
00717 
00718 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00719 TAO_CEC_TypedProxyPushConsumer_Collection*
00720 TAO_CEC_Default_Factory::create_proxy_push_consumer_collection (TAO_CEC_TypedEventChannel *)
00721 {
00722   if (this->consumer_collection_ == 0x000)
00723     return new TAO_ESF_Immediate_Changes<TAO_CEC_TypedProxyPushConsumer,
00724       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00725       TAO_CEC_TypedPushConsumer_List_Iterator,
00726       TAO_SYNCH_MUTEX> ();
00727   else if (this->consumer_collection_ == 0x001)
00728     return new TAO_ESF_Copy_On_Read<TAO_CEC_TypedProxyPushConsumer,
00729       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00730       TAO_CEC_TypedPushConsumer_List_Iterator,
00731       TAO_SYNCH_MUTEX> ();
00732   else if (this->consumer_collection_ == 0x002)
00733     return new TAO_ESF_Copy_On_Write<TAO_CEC_TypedProxyPushConsumer,
00734       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00735       TAO_CEC_TypedPushConsumer_List_Iterator,
00736       ACE_SYNCH> ();
00737   else if (this->consumer_collection_ == 0x003)
00738     return new TAO_ESF_Delayed_Changes<TAO_CEC_TypedProxyPushConsumer,
00739       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00740       TAO_CEC_TypedPushConsumer_List_Iterator,
00741       ACE_SYNCH> ();
00742   else if (this->consumer_collection_ == 0x010)
00743     return new TAO_ESF_Immediate_Changes<TAO_CEC_TypedProxyPushConsumer,
00744       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00745       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00746       TAO_SYNCH_MUTEX> ();
00747   else if (this->consumer_collection_ == 0x011)
00748     return new TAO_ESF_Copy_On_Read<TAO_CEC_TypedProxyPushConsumer,
00749       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00750       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00751       TAO_SYNCH_MUTEX> ();
00752   else if (this->consumer_collection_ == 0x012)
00753     return new TAO_ESF_Copy_On_Write<TAO_CEC_TypedProxyPushConsumer,
00754       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00755       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00756       ACE_SYNCH> ();
00757   else if (this->consumer_collection_ == 0x013)
00758     return new TAO_ESF_Delayed_Changes<TAO_CEC_TypedProxyPushConsumer,
00759       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00760       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00761       ACE_SYNCH> ();
00762   else if (this->consumer_collection_ == 0x100)
00763     return new TAO_ESF_Immediate_Changes<TAO_CEC_TypedProxyPushConsumer,
00764       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00765       TAO_CEC_TypedPushConsumer_List_Iterator,
00766       ACE_Null_Mutex> ();
00767   else if (this->consumer_collection_ == 0x101)
00768     return new TAO_ESF_Copy_On_Read<TAO_CEC_TypedProxyPushConsumer,
00769       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00770       TAO_CEC_TypedPushConsumer_List_Iterator,
00771       ACE_Null_Mutex> ();
00772   else if (this->consumer_collection_ == 0x102)
00773     return new TAO_ESF_Copy_On_Write<TAO_CEC_TypedProxyPushConsumer,
00774       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00775       TAO_CEC_TypedPushConsumer_List_Iterator,
00776       ACE_NULL_SYNCH> ();
00777   else if (this->consumer_collection_ == 0x103)
00778     return new TAO_ESF_Delayed_Changes<TAO_CEC_TypedProxyPushConsumer,
00779       TAO_ESF_Proxy_List<TAO_CEC_TypedProxyPushConsumer>,
00780       TAO_CEC_TypedPushConsumer_List_Iterator,
00781       ACE_NULL_SYNCH> ();
00782   else if (this->consumer_collection_ == 0x110)
00783     return new TAO_ESF_Immediate_Changes<TAO_CEC_TypedProxyPushConsumer,
00784       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00785       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00786       ACE_Null_Mutex> ();
00787   else if (this->consumer_collection_ == 0x111)
00788     return new TAO_ESF_Copy_On_Read<TAO_CEC_TypedProxyPushConsumer,
00789       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00790       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00791       ACE_Null_Mutex> ();
00792   else if (this->consumer_collection_ == 0x112)
00793     return new TAO_ESF_Copy_On_Write<TAO_CEC_TypedProxyPushConsumer,
00794       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00795       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00796       ACE_NULL_SYNCH> ();
00797   else if (this->consumer_collection_ == 0x113)
00798     return new TAO_ESF_Delayed_Changes<TAO_CEC_TypedProxyPushConsumer,
00799       TAO_ESF_Proxy_RB_Tree<TAO_CEC_TypedProxyPushConsumer>,
00800       TAO_CEC_TypedPushConsumer_RB_Tree_Iterator,
00801       ACE_NULL_SYNCH> ();
00802 
00803   return 0;
00804 }
00805 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00806 
00807 void
00808 TAO_CEC_Default_Factory::destroy_proxy_push_consumer_collection (TAO_CEC_ProxyPushConsumer_Collection *x)
00809 {
00810   delete x;
00811 }
00812 
00813 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
00814 void
00815 TAO_CEC_Default_Factory::destroy_proxy_push_consumer_collection (TAO_CEC_TypedProxyPushConsumer_Collection *x)
00816 {
00817   delete x;
00818 }
00819 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
00820 
00821 TAO_CEC_ProxyPullConsumer_Collection*
00822 TAO_CEC_Default_Factory::create_proxy_pull_consumer_collection (TAO_CEC_EventChannel *)
00823 {
00824   if (this->consumer_collection_ == 0x000)
00825     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullConsumer,
00826       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00827       TAO_CEC_PullConsumer_List_Iterator,
00828       TAO_SYNCH_MUTEX> ();
00829   else if (this->consumer_collection_ == 0x001)
00830     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullConsumer,
00831       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00832       TAO_CEC_PullConsumer_List_Iterator,
00833       TAO_SYNCH_MUTEX> ();
00834   else if (this->consumer_collection_ == 0x002)
00835     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullConsumer,
00836       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00837       TAO_CEC_PullConsumer_List_Iterator,
00838       ACE_SYNCH> ();
00839   else if (this->consumer_collection_ == 0x003)
00840     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullConsumer,
00841       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00842       TAO_CEC_PullConsumer_List_Iterator,
00843       ACE_SYNCH> ();
00844   else if (this->consumer_collection_ == 0x010)
00845     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullConsumer,
00846       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00847       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00848       TAO_SYNCH_MUTEX> ();
00849   else if (this->consumer_collection_ == 0x011)
00850     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullConsumer,
00851       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00852       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00853       TAO_SYNCH_MUTEX> ();
00854   else if (this->consumer_collection_ == 0x012)
00855     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullConsumer,
00856       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00857       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00858       ACE_SYNCH> ();
00859   else if (this->consumer_collection_ == 0x013)
00860     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullConsumer,
00861       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00862       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00863       ACE_SYNCH> ();
00864   else if (this->consumer_collection_ == 0x100)
00865     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullConsumer,
00866       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00867       TAO_CEC_PullConsumer_List_Iterator,
00868       ACE_Null_Mutex> ();
00869   else if (this->consumer_collection_ == 0x101)
00870     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullConsumer,
00871       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00872       TAO_CEC_PullConsumer_List_Iterator,
00873       ACE_Null_Mutex> ();
00874   else if (this->consumer_collection_ == 0x102)
00875     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullConsumer,
00876       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00877       TAO_CEC_PullConsumer_List_Iterator,
00878       ACE_NULL_SYNCH> ();
00879   else if (this->consumer_collection_ == 0x103)
00880     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullConsumer,
00881       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullConsumer>,
00882       TAO_CEC_PullConsumer_List_Iterator,
00883       ACE_NULL_SYNCH> ();
00884   else if (this->consumer_collection_ == 0x110)
00885     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullConsumer,
00886       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00887       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00888       ACE_Null_Mutex> ();
00889   else if (this->consumer_collection_ == 0x111)
00890     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullConsumer,
00891       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00892       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00893       ACE_Null_Mutex> ();
00894   else if (this->consumer_collection_ == 0x112)
00895     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullConsumer,
00896       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00897       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00898       ACE_NULL_SYNCH> ();
00899   else if (this->consumer_collection_ == 0x113)
00900     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullConsumer,
00901       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullConsumer>,
00902       TAO_CEC_PullConsumer_RB_Tree_Iterator,
00903       ACE_NULL_SYNCH> ();
00904 
00905   return 0;
00906 }
00907 
00908 void
00909 TAO_CEC_Default_Factory::destroy_proxy_pull_consumer_collection (TAO_CEC_ProxyPullConsumer_Collection *x)
00910 {
00911   delete x;
00912 }
00913 
00914 TAO_CEC_ProxyPushSupplier_Collection*
00915 TAO_CEC_Default_Factory::create_proxy_push_supplier_collection (TAO_CEC_EventChannel *)
00916 {
00917   if (this->supplier_collection_ == 0x000)
00918     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
00919       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00920       TAO_CEC_PushSupplier_List_Iterator,
00921       TAO_SYNCH_MUTEX> ();
00922   else if (this->supplier_collection_ == 0x001)
00923     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
00924       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00925       TAO_CEC_PushSupplier_List_Iterator,
00926       TAO_SYNCH_MUTEX> ();
00927   else if (this->supplier_collection_ == 0x002)
00928     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
00929       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00930       TAO_CEC_PushSupplier_List_Iterator,
00931       ACE_SYNCH> ();
00932   else if (this->supplier_collection_ == 0x003)
00933     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
00934       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00935       TAO_CEC_PushSupplier_List_Iterator,
00936       ACE_SYNCH> ();
00937   else if (this->supplier_collection_ == 0x010)
00938     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
00939       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00940       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00941       TAO_SYNCH_MUTEX> ();
00942   else if (this->supplier_collection_ == 0x011)
00943     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
00944       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00945       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00946       TAO_SYNCH_MUTEX> ();
00947   else if (this->supplier_collection_ == 0x012)
00948     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
00949       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00950       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00951       ACE_SYNCH> ();
00952   else if (this->supplier_collection_ == 0x013)
00953     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
00954       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00955       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00956       ACE_SYNCH> ();
00957   else if (this->supplier_collection_ == 0x100)
00958     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
00959       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00960       TAO_CEC_PushSupplier_List_Iterator,
00961       ACE_Null_Mutex> ();
00962   else if (this->supplier_collection_ == 0x101)
00963     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
00964       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00965       TAO_CEC_PushSupplier_List_Iterator,
00966       ACE_Null_Mutex> ();
00967   else if (this->supplier_collection_ == 0x102)
00968     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
00969       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00970       TAO_CEC_PushSupplier_List_Iterator,
00971       ACE_NULL_SYNCH> ();
00972   else if (this->supplier_collection_ == 0x103)
00973     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
00974       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
00975       TAO_CEC_PushSupplier_List_Iterator,
00976       ACE_NULL_SYNCH> ();
00977   else if (this->supplier_collection_ == 0x110)
00978     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
00979       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00980       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00981       ACE_Null_Mutex> ();
00982   else if (this->supplier_collection_ == 0x111)
00983     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
00984       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00985       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00986       ACE_Null_Mutex> ();
00987   else if (this->supplier_collection_ == 0x112)
00988     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
00989       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00990       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00991       ACE_NULL_SYNCH> ();
00992   else if (this->supplier_collection_ == 0x113)
00993     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
00994       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
00995       TAO_CEC_PushSupplier_RB_Tree_Iterator,
00996       ACE_NULL_SYNCH> ();
00997 
00998   return 0;
00999 }
01000 
01001 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
01002 TAO_CEC_ProxyPushSupplier_Collection*
01003 TAO_CEC_Default_Factory::create_proxy_push_supplier_collection (TAO_CEC_TypedEventChannel *)
01004 {
01005   if (this->supplier_collection_ == 0x000)
01006     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
01007       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01008       TAO_CEC_PushSupplier_List_Iterator,
01009       TAO_SYNCH_MUTEX> ();
01010   else if (this->supplier_collection_ == 0x001)
01011     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
01012       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01013       TAO_CEC_PushSupplier_List_Iterator,
01014       TAO_SYNCH_MUTEX> ();
01015   else if (this->supplier_collection_ == 0x002)
01016     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
01017       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01018       TAO_CEC_PushSupplier_List_Iterator,
01019       ACE_SYNCH> ();
01020   else if (this->supplier_collection_ == 0x003)
01021     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
01022       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01023       TAO_CEC_PushSupplier_List_Iterator,
01024       ACE_SYNCH> ();
01025   else if (this->supplier_collection_ == 0x010)
01026     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
01027       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01028       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01029       TAO_SYNCH_MUTEX> ();
01030   else if (this->supplier_collection_ == 0x011)
01031     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
01032       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01033       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01034       TAO_SYNCH_MUTEX> ();
01035   else if (this->supplier_collection_ == 0x012)
01036     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
01037       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01038       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01039       ACE_SYNCH> ();
01040   else if (this->supplier_collection_ == 0x013)
01041     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
01042       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01043       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01044       ACE_SYNCH> ();
01045   else if (this->supplier_collection_ == 0x100)
01046     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
01047       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01048       TAO_CEC_PushSupplier_List_Iterator,
01049       ACE_Null_Mutex> ();
01050   else if (this->supplier_collection_ == 0x101)
01051     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
01052       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01053       TAO_CEC_PushSupplier_List_Iterator,
01054       ACE_Null_Mutex> ();
01055   else if (this->supplier_collection_ == 0x102)
01056     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
01057       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01058       TAO_CEC_PushSupplier_List_Iterator,
01059       ACE_NULL_SYNCH> ();
01060   else if (this->supplier_collection_ == 0x103)
01061     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
01062       TAO_ESF_Proxy_List<TAO_CEC_ProxyPushSupplier>,
01063       TAO_CEC_PushSupplier_List_Iterator,
01064       ACE_NULL_SYNCH> ();
01065   else if (this->supplier_collection_ == 0x110)
01066     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPushSupplier,
01067       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01068       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01069       ACE_Null_Mutex> ();
01070   else if (this->supplier_collection_ == 0x111)
01071     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPushSupplier,
01072       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01073       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01074       ACE_Null_Mutex> ();
01075   else if (this->supplier_collection_ == 0x112)
01076     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPushSupplier,
01077       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01078       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01079       ACE_NULL_SYNCH> ();
01080   else if (this->supplier_collection_ == 0x113)
01081     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPushSupplier,
01082       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPushSupplier>,
01083       TAO_CEC_PushSupplier_RB_Tree_Iterator,
01084       ACE_NULL_SYNCH> ();
01085 
01086   return 0;
01087 }
01088 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
01089 
01090 void
01091 TAO_CEC_Default_Factory::destroy_proxy_push_supplier_collection (TAO_CEC_ProxyPushSupplier_Collection *x)
01092 {
01093   delete x;
01094 }
01095 
01096 TAO_CEC_ProxyPullSupplier_Collection*
01097 TAO_CEC_Default_Factory::create_proxy_pull_supplier_collection (TAO_CEC_EventChannel *)
01098 {
01099   if (this->supplier_collection_ == 0x000)
01100     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullSupplier,
01101       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01102       TAO_CEC_PullSupplier_List_Iterator,
01103       TAO_SYNCH_MUTEX> ();
01104   else if (this->supplier_collection_ == 0x001)
01105     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullSupplier,
01106       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01107       TAO_CEC_PullSupplier_List_Iterator,
01108       TAO_SYNCH_MUTEX> ();
01109   else if (this->supplier_collection_ == 0x002)
01110     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullSupplier,
01111       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01112       TAO_CEC_PullSupplier_List_Iterator,
01113       ACE_SYNCH> ();
01114   else if (this->supplier_collection_ == 0x003)
01115     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullSupplier,
01116       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01117       TAO_CEC_PullSupplier_List_Iterator,
01118       ACE_SYNCH> ();
01119   else if (this->supplier_collection_ == 0x010)
01120     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullSupplier,
01121       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01122       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01123       TAO_SYNCH_MUTEX> ();
01124   else if (this->supplier_collection_ == 0x011)
01125     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullSupplier,
01126       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01127       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01128       TAO_SYNCH_MUTEX> ();
01129   else if (this->supplier_collection_ == 0x012)
01130     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullSupplier,
01131       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01132       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01133       ACE_SYNCH> ();
01134   else if (this->supplier_collection_ == 0x013)
01135     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullSupplier,
01136       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01137       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01138       ACE_SYNCH> ();
01139   else if (this->supplier_collection_ == 0x100)
01140     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullSupplier,
01141       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01142       TAO_CEC_PullSupplier_List_Iterator,
01143       ACE_Null_Mutex> ();
01144   else if (this->supplier_collection_ == 0x101)
01145     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullSupplier,
01146       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01147       TAO_CEC_PullSupplier_List_Iterator,
01148       ACE_Null_Mutex> ();
01149   else if (this->supplier_collection_ == 0x102)
01150     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullSupplier,
01151       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01152       TAO_CEC_PullSupplier_List_Iterator,
01153       ACE_NULL_SYNCH> ();
01154   else if (this->supplier_collection_ == 0x103)
01155     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullSupplier,
01156       TAO_ESF_Proxy_List<TAO_CEC_ProxyPullSupplier>,
01157       TAO_CEC_PullSupplier_List_Iterator,
01158       ACE_NULL_SYNCH> ();
01159   else if (this->supplier_collection_ == 0x110)
01160     return new TAO_ESF_Immediate_Changes<TAO_CEC_ProxyPullSupplier,
01161       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01162       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01163       ACE_Null_Mutex> ();
01164   else if (this->supplier_collection_ == 0x111)
01165     return new TAO_ESF_Copy_On_Read<TAO_CEC_ProxyPullSupplier,
01166       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01167       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01168       ACE_Null_Mutex> ();
01169   else if (this->supplier_collection_ == 0x112)
01170     return new TAO_ESF_Copy_On_Write<TAO_CEC_ProxyPullSupplier,
01171       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01172       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01173       ACE_NULL_SYNCH> ();
01174   else if (this->supplier_collection_ == 0x113)
01175     return new TAO_ESF_Delayed_Changes<TAO_CEC_ProxyPullSupplier,
01176       TAO_ESF_Proxy_RB_Tree<TAO_CEC_ProxyPullSupplier>,
01177       TAO_CEC_PullSupplier_RB_Tree_Iterator,
01178       ACE_NULL_SYNCH> ();
01179 
01180   return 0;
01181 }
01182 
01183 void
01184 TAO_CEC_Default_Factory::destroy_proxy_pull_supplier_collection (TAO_CEC_ProxyPullSupplier_Collection *x)
01185 {
01186   delete x;
01187 }
01188 
01189 ACE_Lock*
01190 TAO_CEC_Default_Factory::create_consumer_lock (void)
01191 {
01192   if (this->consumer_lock_ == 0)
01193     return new ACE_Lock_Adapter<ACE_Null_Mutex>;
01194   else if (this->consumer_lock_ == 1)
01195     return new ACE_Lock_Adapter<TAO_SYNCH_MUTEX> ();
01196   else if (this->consumer_lock_ == 2)
01197     return new ACE_Lock_Adapter<TAO_SYNCH_RECURSIVE_MUTEX> ();
01198   return 0;
01199 }
01200 
01201 void
01202 TAO_CEC_Default_Factory::destroy_consumer_lock (ACE_Lock* x)
01203 {
01204   delete x;
01205 }
01206 
01207 ACE_Lock*
01208 TAO_CEC_Default_Factory::create_supplier_lock (void)
01209 {
01210   if (this->supplier_lock_ == 0)
01211     return new ACE_Lock_Adapter<ACE_Null_Mutex>;
01212   else if (this->supplier_lock_ == 1)
01213     return new ACE_Lock_Adapter<TAO_SYNCH_MUTEX> ();
01214   else if (this->supplier_lock_ == 2)
01215     return new ACE_Lock_Adapter<TAO_SYNCH_RECURSIVE_MUTEX> ();
01216   return 0;
01217 }
01218 
01219 void
01220 TAO_CEC_Default_Factory::destroy_supplier_lock (ACE_Lock* x)
01221 {
01222   delete x;
01223 }
01224 
01225 TAO_CEC_ConsumerControl*
01226 TAO_CEC_Default_Factory::create_consumer_control (TAO_CEC_EventChannel* ec)
01227 {
01228   if (this->consumer_control_ == 0)
01229     return new TAO_CEC_ConsumerControl ();
01230   else if (this->consumer_control_ == 1)
01231     {
01232       int argc = 0;
01233       char **argv = 0;
01234       CORBA::ORB_var orb =
01235         CORBA::ORB_init (argc, argv, this->orbid_);
01236 
01237       ACE_Time_Value rate (0, this->consumer_control_period_);
01238       return new TAO_CEC_Reactive_ConsumerControl (
01239                                  rate, this->consumer_control_timeout_,
01240                                  this->proxy_disconnect_retries_,
01241                                  ec, orb.in ());
01242     }
01243   return 0;
01244 }
01245 
01246 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
01247 TAO_CEC_ConsumerControl*
01248 TAO_CEC_Default_Factory::create_consumer_control (TAO_CEC_TypedEventChannel* ec)
01249 {
01250   if (this->consumer_control_ == 0)
01251     return new TAO_CEC_ConsumerControl ();
01252   else if (this->consumer_control_ == 1)
01253     {
01254       int argc = 0;
01255       char **argv = 0;
01256       CORBA::ORB_var orb =
01257         CORBA::ORB_init (argc, argv, this->orbid_);
01258 
01259       ACE_Time_Value rate (0, this->consumer_control_period_);
01260       return new TAO_CEC_Reactive_ConsumerControl (
01261                                  rate, this->consumer_control_timeout_,
01262                                  this->proxy_disconnect_retries_,
01263                                  ec, orb.in ());
01264     }
01265   return 0;
01266 }
01267 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
01268 
01269 void
01270 TAO_CEC_Default_Factory::destroy_consumer_control (TAO_CEC_ConsumerControl* x)
01271 {
01272   delete x;
01273 }
01274 
01275 TAO_CEC_SupplierControl*
01276 TAO_CEC_Default_Factory::create_supplier_control (TAO_CEC_EventChannel* ec)
01277 {
01278   if (this->supplier_control_ == 0)
01279     return new TAO_CEC_SupplierControl ();
01280   else if (this->supplier_control_ == 1)
01281     {
01282       int argc = 0;
01283       char **argv = 0;
01284       CORBA::ORB_var orb =
01285         CORBA::ORB_init (argc, argv, this->orbid_);
01286 
01287       ACE_Time_Value rate (0, this->supplier_control_period_);
01288       return new TAO_CEC_Reactive_SupplierControl (
01289                                  rate, this->supplier_control_timeout_,
01290                                  this->proxy_disconnect_retries_,
01291                                  ec, orb.in ());
01292     }
01293   return 0;
01294 }
01295 
01296 #if defined (TAO_HAS_TYPED_EVENT_CHANNEL)
01297 TAO_CEC_SupplierControl*
01298 TAO_CEC_Default_Factory::create_supplier_control (TAO_CEC_TypedEventChannel* ec)
01299 {
01300   if (this->supplier_control_ == 0)
01301     return new TAO_CEC_SupplierControl ();
01302   else if (this->supplier_control_ == 1)
01303     {
01304       int argc = 0;
01305       char **argv = 0;
01306       CORBA::ORB_var orb =
01307         CORBA::ORB_init (argc, argv, this->orbid_);
01308 
01309       ACE_Time_Value rate (0, this->supplier_control_period_);
01310       return new TAO_CEC_Reactive_SupplierControl (
01311                                  rate, this->supplier_control_timeout_,
01312                                  this->proxy_disconnect_retries_,
01313                                  ec, orb.in ());
01314     }
01315   return 0;
01316 }
01317 #endif /* TAO_HAS_TYPED_EVENT_CHANNEL */
01318 
01319 void
01320 TAO_CEC_Default_Factory::destroy_supplier_control (TAO_CEC_SupplierControl* x)
01321 {
01322   delete x;
01323 }
01324 
01325 TAO_END_VERSIONED_NAMESPACE_DECL
01326 
01327 // ****************************************************************
01328 
01329 ACE_STATIC_SVC_DEFINE (TAO_CEC_Default_Factory,
01330                        ACE_TEXT ("CEC_Factory"),
01331                        ACE_SVC_OBJ_T,
01332                        &ACE_SVC_NAME (TAO_CEC_Default_Factory),
01333                        ACE_Service_Type::DELETE_THIS | ACE_Service_Type::DELETE_OBJ,
01334                        0)
01335 ACE_FACTORY_DEFINE (TAO_Event_Serv, TAO_CEC_Default_Factory)

Generated on Thu Nov 9 13:18:16 2006 for TAO_CosEvent by doxygen 1.3.6