TAO_Notify_Builder Class Reference

Helper class to create and activate CORBA objects. More...

#include <Builder.h>

Inheritance diagram for TAO_Notify_Builder:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 TAO_Notify_Builder (void)
virtual ~TAO_Notify_Builder ()
virtual CosNotifyChannelAdmin::EventChannelFactory_ptr build_event_channel_factory (PortableServer::POA_ptr poa, const char *factory_name=0)
 = Factory Methods Build EventChannel Factory.

virtual CosNotifyFilter::FilterFactory_ptr build_filter_factory ()
 Build the Filter Factory.

virtual CosNotifyChannelAdmin::EventChannel_ptr build_event_channel (TAO_Notify_EventChannelFactory *ecf, const CosNotification::QoSProperties &initial_qos, const CosNotification::AdminProperties &initial_admin, CosNotifyChannelAdmin::ChannelID_out id, const char *ec_name=0)
 Build EventChannel.

virtual TAO_Notify_EventChannelbuild_event_channel (TAO_Notify_EventChannelFactory *ecf, const CosNotifyChannelAdmin::ChannelID id, const char *ec_name=0)
virtual CosNotifyChannelAdmin::ConsumerAdmin_ptr build_consumer_admin (TAO_Notify_EventChannel *ec, CosNotifyChannelAdmin::InterFilterGroupOperator op, CosNotifyChannelAdmin::AdminID_out id)
 Build ConsumerAdmin.

virtual TAO_Notify_ConsumerAdminbuild_consumer_admin (TAO_Notify_EventChannel *ec, const CosNotifyChannelAdmin::AdminID id)
virtual CosNotifyChannelAdmin::SupplierAdmin_ptr build_supplier_admin (TAO_Notify_EventChannel *ec, CosNotifyChannelAdmin::InterFilterGroupOperator op, CosNotifyChannelAdmin::AdminID_out id)
 Build SupplierAdmin.

virtual TAO_Notify_SupplierAdminbuild_supplier_admin (TAO_Notify_EventChannel *ec, const CosNotifyChannelAdmin::AdminID id)
virtual CosNotifyChannelAdmin::ProxyConsumer_ptr build_proxy (TAO_Notify_SupplierAdmin *sa, CosNotifyChannelAdmin::ClientType ctype, CosNotifyChannelAdmin::ProxyID_out proxy_id, const CosNotification::QoSProperties &initial_qos)
 Build ProxyConsumer.

virtual TAO_Notify_ProxyConsumerbuild_proxy (TAO_Notify_SupplierAdmin *sa, CosNotifyChannelAdmin::ClientType ctype, const CosNotifyChannelAdmin::ProxyID proxy_id)
 Reload ProxyConsumer.

virtual CosNotifyChannelAdmin::ProxySupplier_ptr build_proxy (TAO_Notify_ConsumerAdmin *ca, CosNotifyChannelAdmin::ClientType ctype, CosNotifyChannelAdmin::ProxyID_out proxy_id, const CosNotification::QoSProperties &initial_qos)
 Build ProxySupplier.

virtual TAO_Notify_ProxySupplierbuild_proxy (TAO_Notify_ConsumerAdmin *ca, CosNotifyChannelAdmin::ClientType ctype, const CosNotifyChannelAdmin::ProxyID proxy_id)
 Reload ProxySupplier.

virtual CosEventChannelAdmin::ProxyPushSupplier_ptr build_proxy (TAO_Notify_ConsumerAdmin *ca)
 Build CosEC style ProxySupplier.

virtual CosEventChannelAdmin::ProxyPushConsumer_ptr build_proxy (TAO_Notify_SupplierAdmin *sa)
 Build CosEC style ProxyConsumer.

virtual void apply_reactive_concurrency (TAO_Notify_Object &object)
 Apply Reactive concurrency.

virtual void apply_thread_pool_concurrency (TAO_Notify_Object &object, const NotifyExt::ThreadPoolParams &tp_params)
 Apply Thread Pools.

virtual void apply_lane_concurrency (TAO_Notify_Object &object, const NotifyExt::ThreadPoolLanesParams &tpl_params)
 Apply Thread Pools with Lanes.


Detailed Description

Helper class to create and activate CORBA objects.

Definition at line 48 of file Builder.h.


Constructor & Destructor Documentation

TAO_Notify_Builder::TAO_Notify_Builder void   ) 
 

Definition at line 158 of file Builder.cpp.

References TAO_Notify_EventType::special().

00159 {
00160   // Init the static members.
00161   TAO_Notify_AnyEvent::event_type_ = TAO_Notify_EventType::special ();
00162 }

TAO_Notify_Builder::~TAO_Notify_Builder  )  [virtual]
 

Definition at line 164 of file Builder.cpp.

00165 {
00166 }


Member Function Documentation

void TAO_Notify_Builder::apply_lane_concurrency TAO_Notify_Object object,
const NotifyExt::ThreadPoolLanesParams &  tpl_params
[virtual]
 

Apply Thread Pools with Lanes.

Reimplemented in TAO_Notify_RT_Builder.

Definition at line 527 of file Builder.cpp.

00528 {
00529   // No lane support
00530   throw CORBA::NO_IMPLEMENT ();
00531 }

void TAO_Notify_Builder::apply_reactive_concurrency TAO_Notify_Object object  )  [virtual]
 

Apply Reactive concurrency.

Definition at line 499 of file Builder.cpp.

References ACE_NEW_THROW_EX, TAO_Notify_Reactive_Task::init(), and TAO_Notify_Object::set_worker_task().

Referenced by TAO_Notify_Object::set_qos().

00500 {
00501   TAO_Notify_Reactive_Task* worker_task;
00502 
00503   ACE_NEW_THROW_EX (worker_task,
00504                     TAO_Notify_Reactive_Task (),
00505                     CORBA::NO_MEMORY ());
00506 
00507   object.set_worker_task (worker_task);
00508 
00509   worker_task->init ();
00510 }

void TAO_Notify_Builder::apply_thread_pool_concurrency TAO_Notify_Object object,
const NotifyExt::ThreadPoolParams &  tp_params
[virtual]
 

Apply Thread Pools.

Reimplemented in TAO_Notify_RT_Builder.

Definition at line 513 of file Builder.cpp.

References ACE_NEW_THROW_EX, TAO_Notify_Object::admin_properties_, TAO_Notify_ThreadPool_Task::init(), and TAO_Notify_Object::set_worker_task().

00514 {
00515   TAO_Notify_ThreadPool_Task* worker_task = 0;
00516 
00517   ACE_NEW_THROW_EX (worker_task,
00518                     TAO_Notify_ThreadPool_Task (),
00519                     CORBA::NO_MEMORY ());
00520 
00521   object.set_worker_task (worker_task);
00522 
00523   worker_task->init (tp_params, object.admin_properties_);
00524 }

virtual TAO_Notify_ConsumerAdmin* TAO_Notify_Builder::build_consumer_admin TAO_Notify_EventChannel ec,
const CosNotifyChannelAdmin::AdminID  id
[virtual]
 

Build ConsumerAdmin during topology restore TODO: this returns a reference to the actual type to accomodate loadable builder/factory there should be an appropriate base class for it to return.

CosNotifyChannelAdmin::ConsumerAdmin_ptr TAO_Notify_Builder::build_consumer_admin TAO_Notify_EventChannel ec,
CosNotifyChannelAdmin::InterFilterGroupOperator  op,
CosNotifyChannelAdmin::AdminID_out  id
[virtual]
 

Build ConsumerAdmin.

Definition at line 247 of file Builder.cpp.

References TAO_Notify_Object::activate(), TAO_Notify_EventChannel::ca_container_, TAO_Notify_Factory::create(), TAO_Notify_Properties::factory(), TAO_Notify_Admin::filter_operator(), TAO_Notify_Object::id(), TAO_Notify_ConsumerAdmin::init(), and TAO_Notify_Properties::instance().

Referenced by TAO_Notify_EventChannel::load_child(), and TAO_Notify_EventChannel::new_for_consumers().

00251 {
00252   CosNotifyChannelAdmin::ConsumerAdmin_var ca_ret;
00253 
00254   TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00255 
00256   TAO_Notify_ConsumerAdmin* ca = 0;
00257   factory->create (ca);
00258 
00259   ca->init (ec);
00260 
00261   ca->filter_operator (op);
00262 
00263   CORBA::Object_var obj = ca->activate (ca);
00264 
00265   id = ca->id ();
00266 
00267   ca_ret = CosNotifyChannelAdmin::ConsumerAdmin::_narrow (obj.in());
00268 
00269   // insert admin in CA container.
00270   ec->ca_container_->insert (ca);
00271 
00272   return ca_ret._retn ();
00273 }

TAO_Notify_EventChannel * TAO_Notify_Builder::build_event_channel TAO_Notify_EventChannelFactory ecf,
const CosNotifyChannelAdmin::ChannelID  id,
const char *  ec_name = 0
[virtual]
 

Definition at line 226 of file Builder.cpp.

References TAO_Notify_Object::activate(), CosNotifyChannelAdmin::ChannelID, TAO_Notify_Factory::create(), TAO_Notify_EventChannelFactory::ec_container(), TAO_Notify_Properties::factory(), TAO_Notify_EventChannel::init(), and TAO_Notify_Properties::instance().

00230 {
00231   TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00232 
00233   TAO_Notify_EventChannel* ec = 0;
00234   factory->create (ec, ec_name);
00235 
00236   ec->init (ecf); //, initial_qos, initial_admin
00237 
00238   // insert ec in ec container.
00239   ecf->ec_container().insert (ec);
00240 
00241   ec->activate (ec, id);
00242 
00243   return ec;
00244 }

CosNotifyChannelAdmin::EventChannel_ptr TAO_Notify_Builder::build_event_channel TAO_Notify_EventChannelFactory ecf,
const CosNotification::QoSProperties initial_qos,
const CosNotification::AdminProperties initial_admin,
CosNotifyChannelAdmin::ChannelID_out  id,
const char *  ec_name = 0
[virtual]
 

Build EventChannel.

Definition at line 200 of file Builder.cpp.

References TAO_Notify_Object::activate(), CosNotification::AdminProperties, TAO_Notify_Factory::create(), TAO_Notify_EventChannelFactory::ec_container(), TAO_Notify_Properties::factory(), TAO_Notify_Object::id(), TAO_Notify_EventChannel::init(), TAO_Notify_Properties::instance(), and CosNotification::QoSProperties.

Referenced by TAO_Notify_EventChannelFactory::create_channel(), and TAO_Notify_EventChannelFactory::load_child().

00206 {
00207   TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00208 
00209   TAO_Notify_EventChannel* ec = 0;
00210   factory->create (ec, ec_name);
00211 
00212   ec->init (ecf, initial_qos, initial_admin);
00213 
00214   // insert ec in ec container.
00215   ecf->ec_container().insert (ec);
00216 
00217   CORBA::Object_var obj = ec->activate (ec);
00218 
00219   // Populate the ID to return.
00220   id = ec->id ();
00221 
00222   return CosNotifyChannelAdmin::EventChannel::_narrow (obj.in());
00223 }

CosNotifyChannelAdmin::EventChannelFactory_ptr TAO_Notify_Builder::build_event_channel_factory PortableServer::POA_ptr  poa,
const char *  factory_name = 0
[virtual]
 

= Factory Methods Build EventChannel Factory.

Definition at line 186 of file Builder.cpp.

References TAO_Notify_EventChannelFactory::activate_self(), TAO_Notify_Factory::create(), TAO_Notify_Properties::factory(), TAO_Notify_EventChannelFactory::init(), and TAO_Notify_Properties::instance().

Referenced by TAO_CosNotify_Service::create().

00188 {
00189   TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00190 
00191   // Create ECF
00192   TAO_Notify_EventChannelFactory* ecf = 0;
00193   factory->create (ecf, name);
00194 
00195   ecf->init (poa);
00196   return ecf->activate_self ();
00197 }

CosNotifyFilter::FilterFactory_ptr TAO_Notify_Builder::build_filter_factory  )  [virtual]
 

Build the Filter Factory.

Definition at line 169 of file Builder.cpp.

References ACE_NEW_THROW_EX, TAO_Notify_FilterFactory::create(), TAO_Notify_Properties::default_poa(), TAO_Notify_Properties::instance(), and ACE_Dynamic_Service< TYPE >::instance().

Referenced by TAO_Notify_EventChannelFactory::init().

00170 {
00171   TAO_Notify_FilterFactory* ff = ACE_Dynamic_Service<TAO_Notify_FilterFactory>::instance ("TAO_Notify_FilterFactory");
00172 
00173   if (ff == 0)
00174     {
00175       ACE_NEW_THROW_EX (ff,
00176                         TAO_Notify_ETCL_FilterFactory (),
00177                         CORBA::NO_MEMORY ());
00178     }
00179 
00180   PortableServer::POA_var default_poa = TAO_Notify_PROPERTIES::instance ()->default_poa ();
00181 
00182   return ff->create (default_poa);
00183 }

CosEventChannelAdmin::ProxyPushConsumer_ptr TAO_Notify_Builder::build_proxy TAO_Notify_SupplierAdmin sa  )  [virtual]
 

Build CosEC style ProxyConsumer.

Definition at line 487 of file Builder.cpp.

References TAO_Notify_Proxy_Builder_T< PROXY_IMPL, PROXY, PROXY_PTR, PROXY_VAR, PARENT >::build(), CosNotifyChannelAdmin::ProxyID, CosNotification::QoSProperties, and TAO_Notify_CosEC_ProxyPushConsumer_Builder.

00488 {
00489   CosNotifyChannelAdmin::ProxyID proxy_id;
00490 
00491   TAO_Notify_CosEC_ProxyPushConsumer_Builder pb;
00492 
00493   CosNotification::QoSProperties initial_qos;
00494 
00495   return pb.build (sa, proxy_id, initial_qos);
00496 }

CosEventChannelAdmin::ProxyPushSupplier_ptr TAO_Notify_Builder::build_proxy TAO_Notify_ConsumerAdmin ca  )  [virtual]
 

Build CosEC style ProxySupplier.

Definition at line 475 of file Builder.cpp.

References TAO_Notify_Proxy_Builder_T< PROXY_IMPL, PROXY, PROXY_PTR, PROXY_VAR, PARENT >::build(), CosNotifyChannelAdmin::ProxyID, CosNotification::QoSProperties, and TAO_Notify_CosEC_ProxyPushSupplier_Builder.

00476 {
00477   CosNotifyChannelAdmin::ProxyID proxy_id;
00478 
00479   TAO_Notify_CosEC_ProxyPushSupplier_Builder pb;
00480 
00481   CosNotification::QoSProperties initial_qos;
00482 
00483   return pb.build (ca, proxy_id, initial_qos);
00484 }

TAO_Notify_ProxySupplier * TAO_Notify_Builder::build_proxy TAO_Notify_ConsumerAdmin ca,
CosNotifyChannelAdmin::ClientType  ctype,
const CosNotifyChannelAdmin::ProxyID  proxy_id
[virtual]
 

Reload ProxySupplier.

Definition at line 442 of file Builder.cpp.

References TAO_Notify_Proxy_Builder_T< PROXY_IMPL, PROXY, PROXY_PTR, PROXY_VAR, PARENT >::build(), CosNotifyChannelAdmin::ProxyID, TAO_Notify_ProxyPushSupplier_Builder, TAO_Notify_SequenceProxyPushSupplier_Builder, and TAO_Notify_StructuredProxyPushSupplier_Builder.

00445 {
00446   switch (ctype)
00447     {
00448     case CosNotifyChannelAdmin::ANY_EVENT:
00449       {
00450         TAO_Notify_ProxyPushSupplier_Builder pb;
00451         return pb.build (ca, proxy_id);
00452       }
00453       break;
00454 
00455     case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00456       {
00457         TAO_Notify_StructuredProxyPushSupplier_Builder pb;
00458         return pb.build (ca, proxy_id);
00459       }
00460     break;
00461 
00462     case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00463       {
00464         TAO_Notify_SequenceProxyPushSupplier_Builder pb;
00465         return pb.build (ca, proxy_id);
00466       }
00467       break;
00468 
00469     default:
00470       throw CORBA::BAD_PARAM ();
00471     }
00472 }

CosNotifyChannelAdmin::ProxySupplier_ptr TAO_Notify_Builder::build_proxy TAO_Notify_ConsumerAdmin ca,
CosNotifyChannelAdmin::ClientType  ctype,
CosNotifyChannelAdmin::ProxyID_out  proxy_id,
const CosNotification::QoSProperties initial_qos
[virtual]
 

Build ProxySupplier.

Definition at line 375 of file Builder.cpp.

References TAO_Notify_Proxy_Builder_T< PROXY_IMPL, PROXY, PROXY_PTR, PROXY_VAR, PARENT >::build(), CosNotification::QoSProperties, TAO_Notify_ProxyPushSupplier_Builder, TAO_Notify_SequenceProxyPushSupplier_Builder, and TAO_Notify_StructuredProxyPushSupplier_Builder.

00379 {
00380   switch (ctype)
00381     {
00382     case CosNotifyChannelAdmin::ANY_EVENT:
00383       {
00384         TAO_Notify_ProxyPushSupplier_Builder pb;
00385         return pb.build (ca, proxy_id, initial_qos);
00386       }
00387       break;
00388 
00389     case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00390       {
00391         TAO_Notify_StructuredProxyPushSupplier_Builder pb;
00392         return pb.build (ca, proxy_id, initial_qos);
00393       }
00394     break;
00395 
00396     case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00397       {
00398         TAO_Notify_SequenceProxyPushSupplier_Builder pb;
00399         return pb.build (ca, proxy_id, initial_qos);
00400       }
00401       break;
00402 
00403     default:
00404       throw CORBA::BAD_PARAM ();
00405     }
00406 }

TAO_Notify_ProxyConsumer * TAO_Notify_Builder::build_proxy TAO_Notify_SupplierAdmin sa,
CosNotifyChannelAdmin::ClientType  ctype,
const CosNotifyChannelAdmin::ProxyID  proxy_id
[virtual]
 

Reload ProxyConsumer.

Definition at line 409 of file Builder.cpp.

References TAO_Notify_Proxy_Builder_T< PROXY_IMPL, PROXY, PROXY_PTR, PROXY_VAR, PARENT >::build(), CosNotifyChannelAdmin::ProxyID, TAO_Notify_ProxyPushConsumer_Builder, TAO_Notify_SequenceProxyPushConsumer_Builder, and TAO_Notify_StructuredProxyPushConsumer_Builder.

00412 {
00413   switch (ctype)
00414     {
00415     case CosNotifyChannelAdmin::ANY_EVENT:
00416       {
00417         TAO_Notify_ProxyPushConsumer_Builder pb;
00418         return pb.build (sa, proxy_id);
00419       }
00420     break;
00421 
00422     case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00423       {
00424         TAO_Notify_StructuredProxyPushConsumer_Builder pb;
00425         return pb.build (sa, proxy_id);
00426       }
00427     break;
00428 
00429     case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00430      {
00431        TAO_Notify_SequenceProxyPushConsumer_Builder pb;
00432        return pb.build (sa, proxy_id);
00433      }
00434       break;
00435 
00436     default:
00437       throw CORBA::BAD_PARAM ();
00438                         }
00439 }

CosNotifyChannelAdmin::ProxyConsumer_ptr TAO_Notify_Builder::build_proxy TAO_Notify_SupplierAdmin sa,
CosNotifyChannelAdmin::ClientType  ctype,
CosNotifyChannelAdmin::ProxyID_out  proxy_id,
const CosNotification::QoSProperties initial_qos
[virtual]
 

Build ProxyConsumer.

Definition at line 341 of file Builder.cpp.

References TAO_Notify_Proxy_Builder_T< PROXY_IMPL, PROXY, PROXY_PTR, PROXY_VAR, PARENT >::build(), CosNotification::QoSProperties, TAO_Notify_ProxyPushConsumer_Builder, TAO_Notify_SequenceProxyPushConsumer_Builder, and TAO_Notify_StructuredProxyPushConsumer_Builder.

Referenced by TAO_Notify_SupplierAdmin::load_proxy(), TAO_Notify_ConsumerAdmin::load_proxy(), TAO_Notify_SupplierAdmin::obtain_notification_push_consumer(), TAO_Notify_SupplierAdmin::obtain_notification_push_consumer_with_qos(), TAO_Notify_ConsumerAdmin::obtain_notification_push_supplier(), TAO_Notify_ConsumerAdmin::obtain_notification_push_supplier_with_qos(), TAO_Notify_SupplierAdmin::obtain_push_consumer(), and TAO_Notify_ConsumerAdmin::obtain_push_supplier().

00345 {
00346   switch (ctype)
00347     {
00348     case CosNotifyChannelAdmin::ANY_EVENT:
00349       {
00350         TAO_Notify_ProxyPushConsumer_Builder pb;
00351         return pb.build (sa, proxy_id, initial_qos);
00352       }
00353     break;
00354 
00355     case CosNotifyChannelAdmin::STRUCTURED_EVENT:
00356       {
00357         TAO_Notify_StructuredProxyPushConsumer_Builder pb;
00358         return pb.build (sa, proxy_id, initial_qos);
00359       }
00360     break;
00361 
00362     case CosNotifyChannelAdmin::SEQUENCE_EVENT:
00363      {
00364        TAO_Notify_SequenceProxyPushConsumer_Builder pb;
00365        return pb.build (sa, proxy_id, initial_qos);
00366      }
00367       break;
00368 
00369     default:
00370       throw CORBA::BAD_PARAM ();
00371                         }
00372 }

virtual TAO_Notify_SupplierAdmin* TAO_Notify_Builder::build_supplier_admin TAO_Notify_EventChannel ec,
const CosNotifyChannelAdmin::AdminID  id
[virtual]
 

Build ConsumerAdmin during topology restore TODO: this returns a reference to the actual type to accomodate loadable builder/factory there should be an appropriate base class for it to return.

CosNotifyChannelAdmin::SupplierAdmin_ptr TAO_Notify_Builder::build_supplier_admin TAO_Notify_EventChannel ec,
CosNotifyChannelAdmin::InterFilterGroupOperator  op,
CosNotifyChannelAdmin::AdminID_out  id
[virtual]
 

Build SupplierAdmin.

Definition at line 294 of file Builder.cpp.

References TAO_Notify_Object::activate(), TAO_Notify_Factory::create(), TAO_Notify_Properties::factory(), TAO_Notify_Admin::filter_operator(), TAO_Notify_Object::id(), TAO_Notify_SupplierAdmin::init(), TAO_Notify_Properties::instance(), and TAO_Notify_EventChannel::sa_container().

Referenced by TAO_Notify_EventChannel::load_child(), and TAO_Notify_EventChannel::new_for_suppliers().

00297 {
00298   CosNotifyChannelAdmin::SupplierAdmin_var sa_ret;
00299 
00300   TAO_Notify_Factory* factory = TAO_Notify_PROPERTIES::instance ()->factory ();
00301 
00302   TAO_Notify_SupplierAdmin* sa = 0;
00303   factory->create (sa);
00304 
00305   sa->init (ec);
00306 
00307   sa->filter_operator (op);
00308 
00309   CORBA::Object_var obj = sa->activate (sa);
00310 
00311   id = sa->id ();
00312 
00313   sa_ret = CosNotifyChannelAdmin::SupplierAdmin::_narrow (obj.in());
00314 
00315   // insert admin in SA container.
00316   ec->sa_container().insert (sa);
00317 
00318   return sa_ret._retn ();
00319 }


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 15:48:43 2008 for TAO_CosNotification by doxygen 1.3.6