diff options
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.cpp')
-rw-r--r-- | trunk/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.cpp | 241 |
1 files changed, 241 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.cpp b/trunk/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.cpp new file mode 100644 index 00000000000..6d85505f431 --- /dev/null +++ b/trunk/TAO/orbsvcs/orbsvcs/CosEvent/CEC_EventChannel.cpp @@ -0,0 +1,241 @@ +// $Id$ + +#include "orbsvcs/CosEvent/CEC_EventChannel.h" +#include "orbsvcs/CosEvent/CEC_Dispatching.h" +#include "orbsvcs/CosEvent/CEC_Pulling_Strategy.h" +#include "orbsvcs/CosEvent/CEC_ConsumerAdmin.h" +#include "orbsvcs/CosEvent/CEC_SupplierAdmin.h" +#include "orbsvcs/CosEvent/CEC_ConsumerControl.h" +#include "orbsvcs/CosEvent/CEC_SupplierControl.h" +#include "ace/Dynamic_Service.h" + +#if ! defined (__ACE_INLINE__) +#include "orbsvcs/CosEvent/CEC_EventChannel.inl" +#endif /* __ACE_INLINE__ */ + +ACE_RCSID(CosEvent, CEC_EventChannel, "$Id$") + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +TAO_CEC_EventChannel:: +TAO_CEC_EventChannel (const TAO_CEC_EventChannel_Attributes& attr, + TAO_CEC_Factory* factory, + int own_factory) + : supplier_poa_ (PortableServer::POA::_duplicate (attr.supplier_poa)), + consumer_poa_ (PortableServer::POA::_duplicate (attr.consumer_poa)), + factory_ (factory), + own_factory_ (own_factory), + consumer_reconnect_ (attr.consumer_reconnect), + supplier_reconnect_ (attr.supplier_reconnect), + disconnect_callbacks_ (attr.disconnect_callbacks) +{ + if (this->factory_ == 0) + { + this->factory_ = + ACE_Dynamic_Service<TAO_CEC_Factory>::instance ("CEC_Factory"); + this->own_factory_ = 0; + ACE_ASSERT (this->factory_ != 0); + } + + this->dispatching_ = + this->factory_->create_dispatching (this); + this->pulling_strategy_ = + this->factory_->create_pulling_strategy (this); + this->consumer_admin_ = + this->factory_->create_consumer_admin (this); + this->supplier_admin_ = + this->factory_->create_supplier_admin (this); + this->consumer_control_ = + this->factory_->create_consumer_control (this); + this->supplier_control_ = + this->factory_->create_supplier_control (this); +} + +TAO_CEC_EventChannel::~TAO_CEC_EventChannel (void) +{ + this->factory_->destroy_dispatching (this->dispatching_); + this->dispatching_ = 0; + + this->factory_->destroy_pulling_strategy (this->pulling_strategy_); + this->pulling_strategy_ = 0; + + this->factory_->destroy_consumer_admin (this->consumer_admin_); + this->consumer_admin_ = 0; + this->factory_->destroy_supplier_admin (this->supplier_admin_); + this->supplier_admin_ = 0; + + this->factory_->destroy_consumer_control (this->consumer_control_); + this->consumer_control_ = 0; + this->factory_->destroy_supplier_control (this->supplier_control_); + this->supplier_control_ = 0; + + if (this->own_factory_) + delete this->factory_; +} + +void +TAO_CEC_EventChannel::activate (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + this->dispatching_->activate (); + this->pulling_strategy_->activate (); + this->consumer_control_->activate (); + this->supplier_control_->activate (); +} + +void +TAO_CEC_EventChannel::shutdown (ACE_ENV_SINGLE_ARG_DECL) +{ + this->dispatching_->shutdown (); + this->pulling_strategy_->shutdown (); + this->supplier_control_->shutdown (); + this->consumer_control_->shutdown (); + + PortableServer::POA_var consumer_poa = + this->consumer_admin_->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + PortableServer::ObjectId_var consumer_id = + consumer_poa->servant_to_id (this->consumer_admin_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + consumer_poa->deactivate_object (consumer_id.in () ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + PortableServer::POA_var supplier_poa = + this->supplier_admin_->_default_POA (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + PortableServer::ObjectId_var supplier_id = + supplier_poa->servant_to_id (this->supplier_admin_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + supplier_poa->deactivate_object (supplier_id.in () ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + this->supplier_admin_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + this->consumer_admin_->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPushConsumer* consumer + ACE_ENV_ARG_DECL) +{ + this->supplier_admin_->connected (consumer ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPushConsumer* consumer + ACE_ENV_ARG_DECL) +{ + this->supplier_admin_->reconnected (consumer ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPushConsumer* consumer + ACE_ENV_ARG_DECL) +{ + this->supplier_admin_->disconnected (consumer ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPullConsumer* consumer + ACE_ENV_ARG_DECL) +{ + this->supplier_admin_->connected (consumer ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPullConsumer* consumer + ACE_ENV_ARG_DECL) +{ + this->supplier_admin_->reconnected (consumer ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPullConsumer* consumer + ACE_ENV_ARG_DECL) +{ + this->supplier_admin_->disconnected (consumer ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPushSupplier* supplier + ACE_ENV_ARG_DECL) +{ + this->consumer_admin_->connected (supplier ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPushSupplier* supplier + ACE_ENV_ARG_DECL) +{ + this->consumer_admin_->reconnected (supplier ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPushSupplier* supplier + ACE_ENV_ARG_DECL) +{ + this->consumer_admin_->disconnected (supplier ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::connected (TAO_CEC_ProxyPullSupplier* supplier + ACE_ENV_ARG_DECL) +{ + this->consumer_admin_->connected (supplier ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::reconnected (TAO_CEC_ProxyPullSupplier* supplier + ACE_ENV_ARG_DECL) +{ + this->consumer_admin_->reconnected (supplier ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_EventChannel::disconnected (TAO_CEC_ProxyPullSupplier* supplier + ACE_ENV_ARG_DECL) +{ + this->consumer_admin_->disconnected (supplier ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +CosEventChannelAdmin::ConsumerAdmin_ptr +TAO_CEC_EventChannel::for_consumers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return this->consumer_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +CosEventChannelAdmin::SupplierAdmin_ptr +TAO_CEC_EventChannel::for_suppliers (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + return this->supplier_admin_->_this (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +void +TAO_CEC_EventChannel::destroy (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + this->shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +CORBA::Policy_ptr TAO_CEC_EventChannel::create_roundtrip_timeout_policy +(const ACE_Time_Value &timeout) +{ + return this->factory_->create_roundtrip_timeout_policy (timeout); +} + +TAO_END_VERSIONED_NAMESPACE_DECL |