Builder.cpp

Go to the documentation of this file.
00001 // Builder.cpp,v 1.24 2006/03/15 21:29:09 jtc Exp
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     // insert proxy in admin container.
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     // insert proxy in admin container.
00103     parent->insert (proxy ACE_ENV_ARG_PARAMETER);
00104     ACE_CHECK_RETURN (0);
00105 
00106     return proxy;
00107   }
00108 
00109 };
00110 
00111 // define the ProxyConsumer Builders.
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 // define the ProxySupplier Builders.
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   // Init the static members.
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   // Create ECF
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   // insert ec in ec container.
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   // Populate the ID to return.
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); //, initial_qos, initial_admin
00263   ACE_CHECK_RETURN (0);
00264 
00265   // insert ec in ec container.
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   // insert admin in CA container.
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   // insert admin in CA container.
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   // insert admin in SA container.
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   // insert admin in CA container.
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& /*object*/, const NotifyExt::ThreadPoolLanesParams& /*tpl_params*/ ACE_ENV_ARG_DECL)
00587 {
00588   // No lane support
00589   ACE_THROW (CORBA::NO_IMPLEMENT ());
00590 }
00591 
00592 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 13:24:08 2006 for TAO_CosNotification by doxygen 1.3.6