diff options
author | michel_j <michel_j@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-08-23 01:30:37 +0000 |
---|---|---|
committer | michel_j <michel_j@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2003-08-23 01:30:37 +0000 |
commit | 9cd3a69eb39641799197036860780276daba84b5 (patch) | |
tree | ac5f04218739d810813ca795b79ad0de6db13b81 /TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp | |
parent | cc3b5b587cf42fdd32e39361c96bd4182229d626 (diff) | |
download | ATCD-9cd3a69eb39641799197036860780276daba84b5.tar.gz |
Fri Aug 22 20:10:41 UTC 2003 Justin Michel <michel_j@ociweb.com>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp new file mode 100644 index 00000000000..01c2f4fd1e9 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/CosEvent/CEC_TypedConsumerAdmin.cpp @@ -0,0 +1,144 @@ +// -*- C++ -*- +// +// $Id$ + +#include "CEC_TypedConsumerAdmin.h" + +#include "CEC_TypedEventChannel.h" + +#if ! defined (__ACE_INLINE__) +#include "CEC_TypedConsumerAdmin.i" +#endif /* __ACE_INLINE__ */ + +// Implementation skeleton constructor +TAO_CEC_TypedConsumerAdmin::TAO_CEC_TypedConsumerAdmin (TAO_CEC_TypedEventChannel *ec) + : typed_event_channel_ (ec), + typed_push_admin_ (ec) +{ + this->default_POA_ = + this->typed_event_channel_->typed_consumer_poa (); +} + +// Implementation skeleton destructor +TAO_CEC_TypedConsumerAdmin::~TAO_CEC_TypedConsumerAdmin (void) +{ +} + +void +TAO_CEC_TypedConsumerAdmin::invoke (const TAO_CEC_TypedEvent& typed_event + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + TAO_CEC_Propagate_Typed_Event typed_event_worker (typed_event, this->typed_event_channel_); + + this->typed_push_admin_.for_each (&typed_event_worker + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +void +TAO_CEC_TypedConsumerAdmin::connected (TAO_CEC_ProxyPushSupplier *supplier + ACE_ENV_ARG_DECL) +{ + this->typed_push_admin_.connected (supplier ACE_ENV_ARG_PARAMETER); +} + +void +TAO_CEC_TypedConsumerAdmin::reconnected (TAO_CEC_ProxyPushSupplier *supplier + ACE_ENV_ARG_DECL) +{ + this->typed_push_admin_.reconnected (supplier ACE_ENV_ARG_PARAMETER); +} + +void +TAO_CEC_TypedConsumerAdmin::disconnected (TAO_CEC_ProxyPushSupplier *supplier + ACE_ENV_ARG_DECL) +{ + this->typed_push_admin_.disconnected (supplier ACE_ENV_ARG_PARAMETER); +} + +void +TAO_CEC_TypedConsumerAdmin::shutdown (ACE_ENV_SINGLE_ARG_DECL) +{ + this->typed_push_admin_.shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; +} + +CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr +TAO_CEC_TypedConsumerAdmin::obtain_typed_pull_supplier ( + const char * /*supported_interface*/ + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosTypedEventChannelAdmin::InterfaceNotSupported + )) + +{ + ACE_THROW (CosTypedEventChannelAdmin::InterfaceNotSupported ()); +} + +CosEventChannelAdmin::ProxyPushSupplier_ptr +TAO_CEC_TypedConsumerAdmin::obtain_typed_push_supplier ( + const char * uses_interface + ) + ACE_THROW_SPEC (( + CORBA::SystemException, + CosTypedEventChannelAdmin::NoSuchImplementation + )) + +{ + // Register the consumer uses_interface with the EC + int result = this->typed_event_channel_->consumer_register_uses_interace (uses_interface ACE_ENV_ARG_DECL); + + if (result == -1) + { + ACE_THROW (CosTypedEventChannelAdmin::NoSuchImplementation ()); + } + + return this->typed_push_admin_.obtain (ACE_ENV_SINGLE_ARG_PARAMETER); +} + +CosEventChannelAdmin::ProxyPushSupplier_ptr +TAO_CEC_TypedConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_THROW (CORBA::NO_IMPLEMENT ()); +} + +CosEventChannelAdmin::ProxyPullSupplier_ptr +TAO_CEC_TypedConsumerAdmin::obtain_pull_supplier (ACE_ENV_SINGLE_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) +{ + ACE_THROW (CORBA::NO_IMPLEMENT ()); +} + +PortableServer::POA_ptr +TAO_CEC_TypedConsumerAdmin::_default_POA (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) +{ + return PortableServer::POA::_duplicate (this->default_POA_.in ()); +} + +// **************************************************************** + +void +TAO_CEC_Propagate_Typed_Event::work (TAO_CEC_ProxyPushSupplier *supplier + ACE_ENV_ARG_DECL) +{ + supplier->invoke (this->typed_event_ ACE_ENV_ARG_PARAMETER); +} + +// **************************************************************** + +#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION) + +template class TAO_ESF_Proxy_Admin<TAO_CEC_TypedEventChannel,TAO_CEC_ProxyPushSupplier,CosEventChannelAdmin::ProxyPushSupplier>; +template class TAO_ESF_Shutdown_Proxy<TAO_CEC_ProxyPushSupplier>; +template class TAO_ESF_Worker<TAO_CEC_ProxyPushSupplier>; + +#elif defined(ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA) + +#pragma instantiate TAO_ESF_Proxy_Admin<TAO_CEC_TypedEventChannel,TAO_CEC_ProxyPushSupplier,CosEventChannelAdmin::ProxyPushSupplier> +#pragma instantiate TAO_ESF_Shutdown_Proxy<TAO_CEC_ProxyPushSupplier> +#pragma instantiate TAO_ESF_Worker<TAO_CEC_ProxyPushSupplier> + +#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */ |