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