CEC_EventChannel.cpp

Go to the documentation of this file.
00001 // CEC_EventChannel.cpp,v 1.11 2006/03/14 06:14:24 jtc Exp
00002 
00003 #include "orbsvcs/CosEvent/CEC_EventChannel.h"
00004 #include "orbsvcs/CosEvent/CEC_Dispatching.h"
00005 #include "orbsvcs/CosEvent/CEC_Pulling_Strategy.h"
00006 #include "orbsvcs/CosEvent/CEC_ConsumerAdmin.h"
00007 #include "orbsvcs/CosEvent/CEC_SupplierAdmin.h"
00008 #include "orbsvcs/CosEvent/CEC_ConsumerControl.h"
00009 #include "orbsvcs/CosEvent/CEC_SupplierControl.h"
00010 #include "ace/Dynamic_Service.h"
00011 
00012 #if ! defined (__ACE_INLINE__)
00013 #include "orbsvcs/CosEvent/CEC_EventChannel.i"
00014 #endif /* __ACE_INLINE__ */
00015 
00016 ACE_RCSID(CosEvent, CEC_EventChannel, "CEC_EventChannel.cpp,v 1.11 2006/03/14 06:14:24 jtc Exp")
00017 
00018 TAO_BEGIN_VERSIONED_NAMESPACE_DECL
00019 
00020 TAO_CEC_EventChannel::
00021 TAO_CEC_EventChannel (const TAO_CEC_EventChannel_Attributes& attr,
00022                       TAO_CEC_Factory* factory,
00023                       int own_factory)
00024   : supplier_poa_ (PortableServer::POA::_duplicate (attr.supplier_poa)),
00025     consumer_poa_ (PortableServer::POA::_duplicate (attr.consumer_poa)),
00026     factory_ (factory),
00027     own_factory_ (own_factory),
00028     consumer_reconnect_ (attr.consumer_reconnect),
00029     supplier_reconnect_ (attr.supplier_reconnect),
00030     disconnect_callbacks_ (attr.disconnect_callbacks)
00031 {
00032   if (this->factory_ == 0)
00033     {
00034       this->factory_ =
00035         ACE_Dynamic_Service<TAO_CEC_Factory>::instance ("CEC_Factory");
00036       this->own_factory_ = 0;
00037       ACE_ASSERT (this->factory_ != 0);
00038     }
00039 
00040   this->dispatching_ =
00041     this->factory_->create_dispatching (this);
00042   this->pulling_strategy_ =
00043     this->factory_->create_pulling_strategy (this);
00044   this->consumer_admin_ =
00045     this->factory_->create_consumer_admin (this);
00046   this->supplier_admin_ =
00047     this->factory_->create_supplier_admin (this);
00048   this->consumer_control_ =
00049     this->factory_->create_consumer_control (this);
00050   this->supplier_control_ =
00051     this->factory_->create_supplier_control (this);
00052 }
00053 
00054 TAO_CEC_EventChannel::~TAO_CEC_EventChannel (void)
00055 {
00056   this->factory_->destroy_dispatching (this->dispatching_);
00057   this->dispatching_ = 0;
00058 
00059   this->factory_->destroy_pulling_strategy (this->pulling_strategy_);
00060   this->pulling_strategy_ = 0;
00061 
00062   this->factory_->destroy_consumer_admin (this->consumer_admin_);
00063   this->consumer_admin_ = 0;
00064   this->factory_->destroy_supplier_admin (this->supplier_admin_);
00065   this->supplier_admin_ = 0;
00066 
00067   this->factory_->destroy_consumer_control (this->consumer_control_);
00068   this->consumer_control_ = 0;
00069   this->factory_->destroy_supplier_control (this->supplier_control_);
00070   this->supplier_control_ = 0;
00071 
00072   if (this->own_factory_)
00073     delete this->factory_;
00074 }
00075 
00076 void
00077 TAO_CEC_EventChannel::activate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED)
00078 {
00079   this->dispatching_->activate ();
00080   this->pulling_strategy_->activate ();
00081   this->consumer_control_->activate ();
00082   this->supplier_control_->activate ();
00083 }
00084 
00085 void
00086 TAO_CEC_EventChannel::shutdown (ACE_ENV_SINGLE_ARG_DECL)
00087 {
00088   this->dispatching_->shutdown ();
00089   this->pulling_strategy_->shutdown ();
00090   this->supplier_control_->shutdown ();
00091   this->consumer_control_->shutdown ();
00092 
00093   PortableServer::POA_var consumer_poa =
00094     this->consumer_admin_->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER);
00095   ACE_CHECK;
00096   PortableServer::ObjectId_var consumer_id =
00097     consumer_poa->servant_to_id (this->consumer_admin_ ACE_ENV_ARG_PARAMETER);
00098   ACE_CHECK;
00099   consumer_poa->deactivate_object (consumer_id.in () ACE_ENV_ARG_PARAMETER);
00100   ACE_CHECK;
00101 
00102   PortableServer::POA_var supplier_poa =
00103     this->supplier_admin_->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER);
00104   ACE_CHECK;
00105   PortableServer::ObjectId_var supplier_id =
00106     supplier_poa->servant_to_id (this->supplier_admin_ ACE_ENV_ARG_PARAMETER);
00107   ACE_CHECK;
00108   supplier_poa->deactivate_object (supplier_id.in () ACE_ENV_ARG_PARAMETER);
00109   ACE_CHECK;
00110 
00111   this->supplier_admin_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
00112   ACE_CHECK;
00113 
00114   this->consumer_admin_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
00115   ACE_CHECK;
00116 }
00117 
00118 void
00119 TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPushConsumer* consumer
00120                                  ACE_ENV_ARG_DECL)
00121 {
00122   this->supplier_admin_->connected (consumer ACE_ENV_ARG_PARAMETER);
00123   ACE_CHECK;
00124 }
00125 
00126 void
00127 TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPushConsumer* consumer
00128                                    ACE_ENV_ARG_DECL)
00129 {
00130   this->supplier_admin_->reconnected (consumer ACE_ENV_ARG_PARAMETER);
00131   ACE_CHECK;
00132 }
00133 
00134 void
00135 TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPushConsumer* consumer
00136                                     ACE_ENV_ARG_DECL)
00137 {
00138   this->supplier_admin_->disconnected (consumer ACE_ENV_ARG_PARAMETER);
00139   ACE_CHECK;
00140 }
00141 
00142 void
00143 TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPullConsumer* consumer
00144                                  ACE_ENV_ARG_DECL)
00145 {
00146   this->supplier_admin_->connected (consumer ACE_ENV_ARG_PARAMETER);
00147   ACE_CHECK;
00148 }
00149 
00150 void
00151 TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPullConsumer* consumer
00152                                    ACE_ENV_ARG_DECL)
00153 {
00154   this->supplier_admin_->reconnected (consumer ACE_ENV_ARG_PARAMETER);
00155   ACE_CHECK;
00156 }
00157 
00158 void
00159 TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPullConsumer* consumer
00160                                     ACE_ENV_ARG_DECL)
00161 {
00162   this->supplier_admin_->disconnected (consumer ACE_ENV_ARG_PARAMETER);
00163   ACE_CHECK;
00164 }
00165 
00166 void
00167 TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPushSupplier* supplier
00168                                  ACE_ENV_ARG_DECL)
00169 {
00170   this->consumer_admin_->connected (supplier ACE_ENV_ARG_PARAMETER);
00171   ACE_CHECK;
00172 }
00173 
00174 void
00175 TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPushSupplier* supplier
00176                                    ACE_ENV_ARG_DECL)
00177 {
00178   this->consumer_admin_->reconnected (supplier ACE_ENV_ARG_PARAMETER);
00179   ACE_CHECK;
00180 }
00181 
00182 void
00183 TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPushSupplier* supplier
00184                                     ACE_ENV_ARG_DECL)
00185 {
00186   this->consumer_admin_->disconnected (supplier ACE_ENV_ARG_PARAMETER);
00187   ACE_CHECK;
00188 }
00189 
00190 void
00191 TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPullSupplier* supplier
00192                                  ACE_ENV_ARG_DECL)
00193 {
00194   this->consumer_admin_->connected (supplier ACE_ENV_ARG_PARAMETER);
00195   ACE_CHECK;
00196 }
00197 
00198 void
00199 TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPullSupplier* supplier
00200                                    ACE_ENV_ARG_DECL)
00201 {
00202   this->consumer_admin_->reconnected (supplier ACE_ENV_ARG_PARAMETER);
00203   ACE_CHECK;
00204 }
00205 
00206 void
00207 TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPullSupplier* supplier
00208                                     ACE_ENV_ARG_DECL)
00209 {
00210   this->consumer_admin_->disconnected (supplier ACE_ENV_ARG_PARAMETER);
00211   ACE_CHECK;
00212 }
00213 
00214 CosEventChannelAdmin::ConsumerAdmin_ptr
00215 TAO_CEC_EventChannel::for_consumers (ACE_ENV_SINGLE_ARG_DECL)
00216   ACE_THROW_SPEC ((CORBA::SystemException))
00217 {
00218   return this->consumer_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00219 }
00220 
00221 CosEventChannelAdmin::SupplierAdmin_ptr
00222 TAO_CEC_EventChannel::for_suppliers (ACE_ENV_SINGLE_ARG_DECL)
00223   ACE_THROW_SPEC ((CORBA::SystemException))
00224 {
00225   return this->supplier_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER);
00226 }
00227 
00228 void
00229 TAO_CEC_EventChannel::destroy (ACE_ENV_SINGLE_ARG_DECL)
00230   ACE_THROW_SPEC ((CORBA::SystemException))
00231 {
00232   this->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER);
00233 }
00234 
00235 TAO_END_VERSIONED_NAMESPACE_DECL

Generated on Thu Nov 9 13:18:16 2006 for TAO_CosEvent by doxygen 1.3.6