00001
00002 #include "orbsvcs/Notify/Builder.h"
00003
00004 ACE_RCSID (Notify,
00005 Builder,
00006 "Builder.cpp,v 1.24 2006/03/15 21:29:09 jtc Exp")
00007
00008 #include "ace/Dynamic_Service.h"
00009
00010 #include "tao/PortableServer/PortableServerC.h"
00011
00012 #include "orbsvcs/Notify/Factory.h"
00013 #include "orbsvcs/Notify/Properties.h"
00014 #include "orbsvcs/Notify/POA_Helper.h"
00015 #include "orbsvcs/Notify/ID_Factory.h"
00016 #include "orbsvcs/Notify/EventChannelFactory.h"
00017 #include "orbsvcs/Notify/EventChannel.h"
00018 #include "orbsvcs/Notify/SupplierAdmin.h"
00019 #include "orbsvcs/Notify/ConsumerAdmin.h"
00020 #include "orbsvcs/Notify/Worker_Task.h"
00021 #include "orbsvcs/Notify/Reactive_Task.h"
00022 #include "orbsvcs/Notify/ThreadPool_Task.h"
00023 #include "orbsvcs/Notify/FilterFactory.h"
00024 #include "orbsvcs/Notify/Object.h"
00025 #include "orbsvcs/Notify/EventType.h"
00026 #include "orbsvcs/Notify/Event.h"
00027 #include "orbsvcs/Notify/Any/AnyEvent.h"
00028 #include "orbsvcs/Notify/Any/ProxyPushConsumer.h"
00029 #include "orbsvcs/Notify/Any/ProxyPushSupplier.h"
00030 #include "orbsvcs/Notify/Any/CosEC_ProxyPushConsumer.h"
00031 #include "orbsvcs/Notify/Any/CosEC_ProxyPushSupplier.h"
00032 #include "orbsvcs/Notify/Structured/StructuredProxyPushConsumer.h"
00033 #include "orbsvcs/Notify/Structured/StructuredProxyPushSupplier.h"
00034 #include "orbsvcs/Notify/Sequence/SequenceProxyPushConsumer.h"
00035 #include "orbsvcs/Notify/Sequence/SequenceProxyPushSupplier.h"
00036 #include "orbsvcs/Notify/ETCL_FilterFactory.h"
00037 #include "orbsvcs/Notify/Container_T.h"
00038
00039 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00040
00041 template <class PROXY_IMPL,
00042 class PROXY,
00043 class PROXY_PTR,
00044 class PROXY_VAR,
00045 class PARENT>
00046 class TAO_Notify_Proxy_Builder_T
00047 {
00048 public:
00049 PROXY_PTR
00050 build (PARENT *parent, CosNotifyChannelAdmin::ProxyID_out proxy_id
00051 , const CosNotification::QoSProperties & initial_qos ACE_ENV_ARG_DECL)
00052 {
00053 PROXY_VAR proxy_ret;
00054
00055 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00056
00057 PROXY_IMPL* proxy = 0;
00058 factory->create (proxy ACE_ENV_ARG_PARAMETER);
00059 ACE_CHECK_RETURN (proxy_ret._retn ());
00060
00061 PortableServer::ServantBase_var servant (proxy);
00062
00063 proxy->init (parent ACE_ENV_ARG_PARAMETER);
00064 ACE_CHECK_RETURN (proxy_ret._retn ());
00065
00066 proxy->set_qos (initial_qos ACE_ENV_ARG_PARAMETER);
00067 ACE_CHECK_RETURN (proxy_ret._retn ());
00068
00069 CORBA::Object_var obj = proxy->activate (proxy ACE_ENV_ARG_PARAMETER);
00070 ACE_CHECK_RETURN (proxy_ret._retn ());
00071
00072 proxy_id = proxy->id ();
00073
00074 proxy_ret = PROXY::_narrow (obj.in() ACE_ENV_ARG_PARAMETER);
00075 ACE_CHECK_RETURN (proxy_ret._retn ());
00076
00077
00078 parent->insert (proxy ACE_ENV_ARG_PARAMETER);
00079 ACE_CHECK_RETURN (PROXY::_nil ());
00080
00081 return proxy_ret._retn ();
00082 }
00083
00084 PROXY_IMPL*
00085 build (PARENT *parent, const CosNotifyChannelAdmin::ProxyID proxy_id
00086 ACE_ENV_ARG_DECL)
00087 {
00088 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00089
00090 PROXY_IMPL* proxy = 0;
00091 factory->create (proxy ACE_ENV_ARG_PARAMETER);
00092 ACE_CHECK_RETURN (0);
00093
00094 PortableServer::ServantBase_var servant (proxy);
00095
00096 proxy->init (parent ACE_ENV_ARG_PARAMETER);
00097 ACE_CHECK_RETURN (0);
00098
00099 proxy->activate (proxy, proxy_id ACE_ENV_ARG_PARAMETER);
00100 ACE_CHECK_RETURN (0);
00101
00102
00103 parent->insert (proxy ACE_ENV_ARG_PARAMETER);
00104 ACE_CHECK_RETURN (0);
00105
00106 return proxy;
00107 }
00108
00109 };
00110
00111
00112 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_ProxyPushConsumer
00113 , CosNotifyChannelAdmin::ProxyConsumer
00114 , CosNotifyChannelAdmin::ProxyConsumer_ptr
00115 , CosNotifyChannelAdmin::ProxyConsumer_var
00116 , TAO_Notify_SupplierAdmin>
00117 TAO_Notify_ProxyPushConsumer_Builder;
00118
00119 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_StructuredProxyPushConsumer
00120 , CosNotifyChannelAdmin::ProxyConsumer
00121 , CosNotifyChannelAdmin::ProxyConsumer_ptr
00122 , CosNotifyChannelAdmin::ProxyConsumer_var
00123 , TAO_Notify_SupplierAdmin>
00124 TAO_Notify_StructuredProxyPushConsumer_Builder;
00125
00126 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_SequenceProxyPushConsumer
00127 , CosNotifyChannelAdmin::ProxyConsumer
00128 , CosNotifyChannelAdmin::ProxyConsumer_ptr
00129 , CosNotifyChannelAdmin::ProxyConsumer_var
00130 , TAO_Notify_SupplierAdmin>
00131 TAO_Notify_SequenceProxyPushConsumer_Builder;
00132
00133 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_CosEC_ProxyPushConsumer
00134 , CosEventChannelAdmin::ProxyPushConsumer
00135 , CosEventChannelAdmin::ProxyPushConsumer_ptr
00136 , CosEventChannelAdmin::ProxyPushConsumer_var
00137 , TAO_Notify_SupplierAdmin>
00138 TAO_Notify_CosEC_ProxyPushConsumer_Builder;
00139
00140
00141 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_ProxyPushSupplier
00142 , CosNotifyChannelAdmin::ProxySupplier
00143 , CosNotifyChannelAdmin::ProxySupplier_ptr
00144 , CosNotifyChannelAdmin::ProxySupplier_var
00145 , TAO_Notify_ConsumerAdmin>
00146 TAO_Notify_ProxyPushSupplier_Builder;
00147
00148 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_StructuredProxyPushSupplier
00149 , CosNotifyChannelAdmin::ProxySupplier
00150 , CosNotifyChannelAdmin::ProxySupplier_ptr
00151 , CosNotifyChannelAdmin::ProxySupplier_var
00152 , TAO_Notify_ConsumerAdmin>
00153 TAO_Notify_StructuredProxyPushSupplier_Builder;
00154
00155 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_SequenceProxyPushSupplier
00156 , CosNotifyChannelAdmin::ProxySupplier
00157 , CosNotifyChannelAdmin::ProxySupplier_ptr
00158 , CosNotifyChannelAdmin::ProxySupplier_var
00159 , TAO_Notify_ConsumerAdmin>
00160 TAO_Notify_SequenceProxyPushSupplier_Builder;
00161
00162 typedef TAO_Notify_Proxy_Builder_T<TAO_Notify_CosEC_ProxyPushSupplier
00163 , CosEventChannelAdmin::ProxyPushSupplier
00164 , CosEventChannelAdmin::ProxyPushSupplier_ptr
00165 , CosEventChannelAdmin::ProxyPushSupplier_var
00166 , TAO_Notify_ConsumerAdmin>
00167 TAO_Notify_CosEC_ProxyPushSupplier_Builder;
00168
00169 TAO_Notify_Builder::TAO_Notify_Builder (void)
00170 {
00171
00172 TAO_Notify_AnyEvent::event_type_ = TAO_Notify_EventType::special ();
00173 }
00174
00175 TAO_Notify_Builder::~TAO_Notify_Builder ()
00176 {
00177 }
00178
00179 CosNotifyFilter::FilterFactory_ptr
00180 TAO_Notify_Builder::build_filter_factory (ACE_ENV_SINGLE_ARG_DECL)
00181 {
00182 TAO_Notify_FilterFactory* ff = ACE_Dynamic_Service<TAO_Notify_FilterFactory>::instance ("TAO_Notify_FilterFactory");
00183
00184 if (ff == 0)
00185 {
00186 ACE_NEW_THROW_EX (ff,
00187 TAO_Notify_ETCL_FilterFactory (),
00188 CORBA::NO_MEMORY ());
00189 ACE_CHECK_RETURN (CosNotifyFilter::FilterFactory::_nil ());
00190 }
00191
00192 PortableServer::POA_var default_poa = TAO_Notify_PROPERTIES::instance ()->default_poa ();
00193
00194 return ff->create (default_poa ACE_ENV_ARG_PARAMETER);
00195 }
00196
00197 CosNotifyChannelAdmin::EventChannelFactory_ptr
00198 TAO_Notify_Builder::build_event_channel_factory (PortableServer::POA_ptr poa ACE_ENV_ARG_DECL)
00199 {
00200 CosNotifyChannelAdmin::EventChannelFactory_var ecf_ret;
00201
00202 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00203
00204
00205 TAO_Notify_EventChannelFactory* ecf = 0;
00206 factory->create (ecf ACE_ENV_ARG_PARAMETER);
00207 ACE_CHECK_RETURN (ecf_ret._retn ());
00208
00209 ecf->init (poa ACE_ENV_ARG_PARAMETER);
00210 ACE_CHECK_RETURN (ecf_ret._retn ());
00211 ecf_ret = ecf->activate_self (ACE_ENV_SINGLE_ARG_PARAMETER);
00212 ACE_CHECK_RETURN (ecf_ret._retn ());
00213
00214 return (ecf_ret._retn ());
00215 }
00216
00217 CosNotifyChannelAdmin::EventChannel_ptr
00218 TAO_Notify_Builder::build_event_channel (
00219 TAO_Notify_EventChannelFactory* ecf,
00220 const CosNotification::QoSProperties & initial_qos,
00221 const CosNotification::AdminProperties & initial_admin,
00222 CosNotifyChannelAdmin::ChannelID_out id ACE_ENV_ARG_DECL)
00223 {
00224 CosNotifyChannelAdmin::EventChannel_var ec_ret;
00225
00226 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00227
00228 TAO_Notify_EventChannel* ec = 0;
00229 factory->create (ec ACE_ENV_ARG_PARAMETER);
00230 ACE_CHECK_RETURN (ec_ret._retn ());
00231
00232 ec->init (ecf, initial_qos, initial_admin ACE_ENV_ARG_PARAMETER);
00233 ACE_CHECK_RETURN (ec_ret._retn ());
00234
00235
00236 ecf->ec_container().insert (ec ACE_ENV_ARG_PARAMETER);
00237 ACE_CHECK_RETURN (ec_ret._retn ());
00238
00239 CORBA::Object_var obj = ec->activate (ec ACE_ENV_ARG_PARAMETER);
00240 ACE_CHECK_RETURN (ec_ret._retn ());
00241
00242
00243 id = ec->id ();
00244
00245 ec_ret = CosNotifyChannelAdmin::EventChannel::_narrow (obj.in() ACE_ENV_ARG_PARAMETER);
00246 ACE_CHECK_RETURN (ec_ret._retn ());
00247
00248 return ec_ret._retn ();
00249 }
00250
00251 TAO_Notify_EventChannel *
00252 TAO_Notify_Builder::build_event_channel (
00253 TAO_Notify_EventChannelFactory* ecf,
00254 const CosNotifyChannelAdmin::ChannelID id ACE_ENV_ARG_DECL)
00255 {
00256 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00257
00258 TAO_Notify_EventChannel* ec = 0;
00259 factory->create (ec ACE_ENV_ARG_PARAMETER);
00260 ACE_CHECK_RETURN (0);
00261
00262 ec->init (ecf ACE_ENV_ARG_PARAMETER);
00263 ACE_CHECK_RETURN (0);
00264
00265
00266 ecf->ec_container().insert (ec ACE_ENV_ARG_PARAMETER);
00267 ACE_CHECK_RETURN (0);
00268
00269 ec->activate (ec, id ACE_ENV_ARG_PARAMETER);
00270 ACE_CHECK_RETURN (0);
00271
00272 return ec;
00273 }
00274
00275 CosNotifyChannelAdmin::ConsumerAdmin_ptr
00276 TAO_Notify_Builder::build_consumer_admin (
00277 TAO_Notify_EventChannel* ec,
00278 CosNotifyChannelAdmin::InterFilterGroupOperator op,
00279 CosNotifyChannelAdmin::AdminID_out id ACE_ENV_ARG_DECL)
00280 {
00281 CosNotifyChannelAdmin::ConsumerAdmin_var ca_ret;
00282
00283 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00284
00285 TAO_Notify_ConsumerAdmin* ca = 0;
00286 factory->create (ca ACE_ENV_ARG_PARAMETER);
00287 ACE_CHECK_RETURN (ca_ret._retn ());
00288
00289 ca->init (ec ACE_ENV_ARG_PARAMETER);
00290 ACE_CHECK_RETURN (ca_ret._retn ());
00291
00292 ca->filter_operator (op);
00293
00294 CORBA::Object_var obj = ca->activate (ca ACE_ENV_ARG_PARAMETER);
00295 ACE_CHECK_RETURN (ca_ret._retn ());
00296
00297 id = ca->id ();
00298
00299 ca_ret = CosNotifyChannelAdmin::ConsumerAdmin::_narrow (obj.in() ACE_ENV_ARG_PARAMETER);
00300 ACE_CHECK_RETURN (ca_ret._retn ());
00301
00302
00303 ec->ca_container_->insert (ca ACE_ENV_ARG_PARAMETER);
00304 ACE_CHECK_RETURN (ca_ret._retn ());
00305
00306 return ca_ret._retn ();
00307 }
00308
00309 TAO_Notify_ConsumerAdmin *
00310 TAO_Notify_Builder::build_consumer_admin (
00311 TAO_Notify_EventChannel* ec,
00312 const CosNotifyChannelAdmin::ChannelID id
00313 ACE_ENV_ARG_DECL)
00314 {
00315 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00316 TAO_Notify_ConsumerAdmin * ca = 0;
00317 factory->create (ca ACE_ENV_ARG_PARAMETER);
00318 ACE_CHECK_RETURN (0);
00319
00320 ca->init (ec ACE_ENV_ARG_PARAMETER);
00321 ACE_CHECK_RETURN (0);
00322
00323 CORBA::Object_var obj = ca->activate (ca, id ACE_ENV_ARG_PARAMETER);
00324 ACE_CHECK_RETURN (0);
00325
00326
00327 ec->ca_container_->insert (ca ACE_ENV_ARG_PARAMETER);
00328 ACE_CHECK_RETURN (0);
00329 return ca;
00330 }
00331
00332 CosNotifyChannelAdmin::SupplierAdmin_ptr
00333 TAO_Notify_Builder::build_supplier_admin (TAO_Notify_EventChannel* ec, CosNotifyChannelAdmin::InterFilterGroupOperator op, CosNotifyChannelAdmin::AdminID_out id ACE_ENV_ARG_DECL)
00334 {
00335 CosNotifyChannelAdmin::SupplierAdmin_var sa_ret;
00336
00337 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00338
00339 TAO_Notify_SupplierAdmin* sa = 0;
00340 factory->create (sa ACE_ENV_ARG_PARAMETER);
00341 ACE_CHECK_RETURN (sa_ret._retn ());
00342
00343 sa->init (ec ACE_ENV_ARG_PARAMETER);
00344 ACE_CHECK_RETURN (sa_ret._retn ());
00345
00346 sa->filter_operator (op);
00347
00348 CORBA::Object_var obj = sa->activate (sa ACE_ENV_ARG_PARAMETER);
00349 ACE_CHECK_RETURN (sa_ret._retn ());
00350
00351 id = sa->id ();
00352
00353 sa_ret = CosNotifyChannelAdmin::SupplierAdmin::_narrow (obj.in() ACE_ENV_ARG_PARAMETER);
00354 ACE_CHECK_RETURN (sa_ret._retn ());
00355
00356
00357 ec->sa_container().insert (sa ACE_ENV_ARG_PARAMETER);
00358 ACE_CHECK_RETURN (sa_ret._retn ());
00359
00360 return sa_ret._retn ();
00361 }
00362
00363 TAO_Notify_SupplierAdmin *
00364 TAO_Notify_Builder::build_supplier_admin (
00365 TAO_Notify_EventChannel* ec,
00366 const CosNotifyChannelAdmin::ChannelID id
00367 ACE_ENV_ARG_DECL)
00368 {
00369 TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00370 TAO_Notify_SupplierAdmin * sa = 0;
00371 factory->create (sa ACE_ENV_ARG_PARAMETER);
00372 ACE_CHECK_RETURN (0);
00373
00374 sa->init (ec ACE_ENV_ARG_PARAMETER);
00375 ACE_CHECK_RETURN (0);
00376
00377 CORBA::Object_var obj = sa->activate (sa, id ACE_ENV_ARG_PARAMETER);
00378 ACE_CHECK_RETURN (0);
00379
00380
00381 ec->sa_container().insert (sa ACE_ENV_ARG_PARAMETER);
00382 ACE_CHECK_RETURN (0);
00383
00384 return sa;
00385 }
00386
00387 CosNotifyChannelAdmin::ProxyConsumer_ptr
00388 TAO_Notify_Builder::build_proxy(TAO_Notify_SupplierAdmin* sa
00389 , CosNotifyChannelAdmin::ClientType ctype
00390 , CosNotifyChannelAdmin::ProxyID_out proxy_id
00391 , const CosNotification::QoSProperties & initial_qos
00392 ACE_ENV_ARG_DECL)
00393 {
00394 switch (ctype)
00395 {
00396 case CosNotifyChannelAdmin::ANY_EVENT:
00397 {
00398 TAO_Notify_ProxyPushConsumer_Builder pb;
00399 return pb.build (sa, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00400 }
00401 break;
00402
00403 case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00404 {
00405 TAO_Notify_StructuredProxyPushConsumer_Builder pb;
00406 return pb.build (sa, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00407 }
00408 break;
00409
00410 case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00411 {
00412 TAO_Notify_SequenceProxyPushConsumer_Builder pb;
00413 return pb.build (sa, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00414 }
00415 break;
00416
00417 default:
00418 ACE_THROW_RETURN (CORBA::BAD_PARAM (),
00419 CosNotifyChannelAdmin::ProxyConsumer::_nil ());
00420 }
00421 }
00422
00423 CosNotifyChannelAdmin::ProxySupplier_ptr
00424 TAO_Notify_Builder::build_proxy(TAO_Notify_ConsumerAdmin* ca
00425 , CosNotifyChannelAdmin::ClientType ctype
00426 , CosNotifyChannelAdmin::ProxyID_out proxy_id
00427 , const CosNotification::QoSProperties & initial_qos
00428 ACE_ENV_ARG_DECL)
00429 {
00430 switch (ctype)
00431 {
00432 case CosNotifyChannelAdmin::ANY_EVENT:
00433 {
00434 TAO_Notify_ProxyPushSupplier_Builder pb;
00435 return pb.build (ca, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00436 }
00437 break;
00438
00439 case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00440 {
00441 TAO_Notify_StructuredProxyPushSupplier_Builder pb;
00442 return pb.build (ca, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00443 }
00444 break;
00445
00446 case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00447 {
00448 TAO_Notify_SequenceProxyPushSupplier_Builder pb;
00449 return pb.build (ca, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00450 }
00451 break;
00452
00453 default:
00454 ACE_THROW_RETURN (CORBA::BAD_PARAM (),
00455 CosNotifyChannelAdmin::ProxySupplier::_nil ());
00456 }
00457 }
00458
00459 TAO_Notify_ProxyConsumer *
00460 TAO_Notify_Builder::build_proxy(TAO_Notify_SupplierAdmin* sa
00461 , CosNotifyChannelAdmin::ClientType ctype
00462 , const CosNotifyChannelAdmin::ProxyID proxy_id
00463 ACE_ENV_ARG_DECL)
00464 {
00465 switch (ctype)
00466 {
00467 case CosNotifyChannelAdmin::ANY_EVENT:
00468 {
00469 TAO_Notify_ProxyPushConsumer_Builder pb;
00470 return pb.build (sa, proxy_id ACE_ENV_ARG_PARAMETER);
00471 }
00472 break;
00473
00474 case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00475 {
00476 TAO_Notify_StructuredProxyPushConsumer_Builder pb;
00477 return pb.build (sa, proxy_id ACE_ENV_ARG_PARAMETER);
00478 }
00479 break;
00480
00481 case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00482 {
00483 TAO_Notify_SequenceProxyPushConsumer_Builder pb;
00484 return pb.build (sa, proxy_id ACE_ENV_ARG_PARAMETER);
00485 }
00486 break;
00487
00488 default:
00489 ACE_THROW_RETURN (CORBA::BAD_PARAM (),
00490 0);
00491 }
00492 }
00493
00494 TAO_Notify_ProxySupplier *
00495 TAO_Notify_Builder::build_proxy(TAO_Notify_ConsumerAdmin* ca
00496 , CosNotifyChannelAdmin::ClientType ctype
00497 , const CosNotifyChannelAdmin::ProxyID proxy_id
00498 ACE_ENV_ARG_DECL)
00499 {
00500 switch (ctype)
00501 {
00502 case CosNotifyChannelAdmin::ANY_EVENT:
00503 {
00504 TAO_Notify_ProxyPushSupplier_Builder pb;
00505 return pb.build (ca, proxy_id ACE_ENV_ARG_PARAMETER);
00506 }
00507 break;
00508
00509 case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00510 {
00511 TAO_Notify_StructuredProxyPushSupplier_Builder pb;
00512 return pb.build (ca, proxy_id ACE_ENV_ARG_PARAMETER);
00513 }
00514 break;
00515
00516 case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00517 {
00518 TAO_Notify_SequenceProxyPushSupplier_Builder pb;
00519 return pb.build (ca, proxy_id ACE_ENV_ARG_PARAMETER);
00520 }
00521 break;
00522
00523 default:
00524 ACE_THROW_RETURN (CORBA::BAD_PARAM (),
00525 0);
00526 }
00527 }
00528
00529 CosEventChannelAdmin::ProxyPushSupplier_ptr
00530 TAO_Notify_Builder::build_proxy (TAO_Notify_ConsumerAdmin* ca ACE_ENV_ARG_DECL)
00531 {
00532 CosNotifyChannelAdmin::ProxyID proxy_id;
00533
00534 TAO_Notify_CosEC_ProxyPushSupplier_Builder pb;
00535
00536 CosNotification::QoSProperties initial_qos;
00537
00538 return pb.build (ca, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00539 }
00540
00541 CosEventChannelAdmin::ProxyPushConsumer_ptr
00542 TAO_Notify_Builder::build_proxy (TAO_Notify_SupplierAdmin* sa ACE_ENV_ARG_DECL)
00543 {
00544 CosNotifyChannelAdmin::ProxyID proxy_id;
00545
00546 TAO_Notify_CosEC_ProxyPushConsumer_Builder pb;
00547
00548 CosNotification::QoSProperties initial_qos;
00549
00550 return pb.build (sa, proxy_id, initial_qos ACE_ENV_ARG_PARAMETER);
00551 }
00552
00553 void
00554 TAO_Notify_Builder::apply_reactive_concurrency (TAO_Notify_Object& object ACE_ENV_ARG_DECL)
00555 {
00556 TAO_Notify_Reactive_Task* worker_task;
00557
00558 ACE_NEW_THROW_EX (worker_task,
00559 TAO_Notify_Reactive_Task (),
00560 CORBA::NO_MEMORY ());
00561 ACE_CHECK;
00562
00563 object.set_worker_task (worker_task);
00564
00565 worker_task->init (ACE_ENV_SINGLE_ARG_PARAMETER);
00566 ACE_CHECK;
00567 }
00568
00569 void
00570 TAO_Notify_Builder::apply_thread_pool_concurrency (TAO_Notify_Object& object, const NotifyExt::ThreadPoolParams& tp_params ACE_ENV_ARG_DECL)
00571 {
00572 TAO_Notify_ThreadPool_Task* worker_task;
00573
00574 ACE_NEW_THROW_EX (worker_task,
00575 TAO_Notify_ThreadPool_Task (),
00576 CORBA::NO_MEMORY ());
00577 ACE_CHECK;
00578
00579 object.set_worker_task (worker_task);
00580
00581 worker_task->init (tp_params, object.admin_properties_ ACE_ENV_ARG_PARAMETER);
00582 ACE_CHECK;
00583 }
00584
00585 void
00586 TAO_Notify_Builder::apply_lane_concurrency (TAO_Notify_Object& , const NotifyExt::ThreadPoolLanesParams& ACE_ENV_ARG_DECL)
00587 {
00588
00589 ACE_THROW (CORBA::NO_IMPLEMENT ());
00590 }
00591
00592 TAO_END_VERSIONED_NAMESPACE_DECL