00001 // -*- C++ -*- 00002 // 00003 // $Id: CEC_TypedConsumerAdmin.cpp 77001 2007-02-12 07:54:49Z johnnyw $ 00004 00005 #include "orbsvcs/CosEvent/CEC_TypedConsumerAdmin.h" 00006 00007 #include "orbsvcs/CosEvent/CEC_TypedEventChannel.h" 00008 00009 #if ! defined (__ACE_INLINE__) 00010 #include "orbsvcs/CosEvent/CEC_TypedConsumerAdmin.inl" 00011 #endif /* __ACE_INLINE__ */ 00012 00013 00014 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00015 00016 // Implementation skeleton constructor 00017 TAO_CEC_TypedConsumerAdmin::TAO_CEC_TypedConsumerAdmin (TAO_CEC_TypedEventChannel *ec) 00018 : typed_event_channel_ (ec), 00019 typed_push_admin_ (ec) 00020 { 00021 this->default_POA_ = 00022 this->typed_event_channel_->typed_consumer_poa (); 00023 } 00024 00025 // Implementation skeleton destructor 00026 TAO_CEC_TypedConsumerAdmin::~TAO_CEC_TypedConsumerAdmin (void) 00027 { 00028 } 00029 00030 void 00031 TAO_CEC_TypedConsumerAdmin::invoke (const TAO_CEC_TypedEvent& typed_event) 00032 { 00033 TAO_CEC_Propagate_Typed_Event typed_event_worker (typed_event, this->typed_event_channel_); 00034 00035 this->typed_push_admin_.for_each (&typed_event_worker); 00036 } 00037 00038 void 00039 TAO_CEC_TypedConsumerAdmin::connected (TAO_CEC_ProxyPushSupplier *supplier) 00040 { 00041 this->typed_push_admin_.connected (supplier); 00042 } 00043 00044 void 00045 TAO_CEC_TypedConsumerAdmin::reconnected (TAO_CEC_ProxyPushSupplier *supplier) 00046 { 00047 this->typed_push_admin_.reconnected (supplier); 00048 } 00049 00050 void 00051 TAO_CEC_TypedConsumerAdmin::disconnected (TAO_CEC_ProxyPushSupplier *supplier) 00052 { 00053 this->typed_push_admin_.disconnected (supplier); 00054 } 00055 00056 void 00057 TAO_CEC_TypedConsumerAdmin::shutdown (void) 00058 { 00059 this->typed_push_admin_.shutdown (); 00060 } 00061 00062 CosTypedEventChannelAdmin::TypedProxyPullSupplier_ptr 00063 TAO_CEC_TypedConsumerAdmin::obtain_typed_pull_supplier ( 00064 const char * /*supported_interface*/ 00065 ) 00066 { 00067 throw CosTypedEventChannelAdmin::InterfaceNotSupported (); 00068 } 00069 00070 CosEventChannelAdmin::ProxyPushSupplier_ptr 00071 TAO_CEC_TypedConsumerAdmin::obtain_typed_push_supplier ( 00072 const char * uses_interface 00073 ) 00074 00075 { 00076 // Register the consumer uses_interface with the EC 00077 int result = this->typed_event_channel_->consumer_register_uses_interace (uses_interface); 00078 00079 if (result == -1) 00080 { 00081 throw CosTypedEventChannelAdmin::NoSuchImplementation (); 00082 } 00083 00084 return this->typed_push_admin_.obtain (); 00085 } 00086 00087 CosEventChannelAdmin::ProxyPushSupplier_ptr 00088 TAO_CEC_TypedConsumerAdmin::obtain_push_supplier (void) 00089 { 00090 throw CORBA::NO_IMPLEMENT (); 00091 } 00092 00093 CosEventChannelAdmin::ProxyPullSupplier_ptr 00094 TAO_CEC_TypedConsumerAdmin::obtain_pull_supplier (void) 00095 { 00096 throw CORBA::NO_IMPLEMENT (); 00097 } 00098 00099 PortableServer::POA_ptr 00100 TAO_CEC_TypedConsumerAdmin::_default_POA (void) 00101 { 00102 return PortableServer::POA::_duplicate (this->default_POA_.in ()); 00103 } 00104 00105 // **************************************************************** 00106 00107 void 00108 TAO_CEC_Propagate_Typed_Event::work (TAO_CEC_ProxyPushSupplier *supplier) 00109 { 00110 supplier->invoke (this->typed_event_); 00111 } 00112 00113 TAO_END_VERSIONED_NAMESPACE_DECL