00001
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
00035
00036 #if ! defined (__ACE_INLINE__)
00037 #include "orbsvcs/CosEvent/CEC_Default_Factory.i"
00038 #endif
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)