00001 // $Id: CEC_ConsumerAdmin.cpp 77001 2007-02-12 07:54:49Z johnnyw $ 00002 00003 #include "orbsvcs/CosEvent/CEC_ConsumerAdmin.h" 00004 #include "orbsvcs/CosEvent/CEC_ProxyPushSupplier.h" 00005 #include "orbsvcs/CosEvent/CEC_ProxyPullSupplier.h" 00006 #include "orbsvcs/CosEvent/CEC_ProxyPushConsumer.h" 00007 #include "orbsvcs/CosEvent/CEC_EventChannel.h" 00008 00009 #include "orbsvcs/ESF/ESF_Shutdown_Proxy.h" 00010 00011 #if ! defined (__ACE_INLINE__) 00012 #include "orbsvcs/CosEvent/CEC_ConsumerAdmin.inl" 00013 #endif /* __ACE_INLINE__ */ 00014 00015 ACE_RCSID (CosEvent, 00016 CEC_ConsumerAdmin, 00017 "$Id: CEC_ConsumerAdmin.cpp 77001 2007-02-12 07:54:49Z johnnyw $") 00018 00019 TAO_BEGIN_VERSIONED_NAMESPACE_DECL 00020 00021 TAO_CEC_ConsumerAdmin::TAO_CEC_ConsumerAdmin (TAO_CEC_EventChannel *ec) 00022 : event_channel_ (ec), 00023 push_admin_ (ec), 00024 pull_admin_ (ec) 00025 { 00026 this->default_POA_ = 00027 this->event_channel_->consumer_poa (); 00028 } 00029 00030 TAO_CEC_ConsumerAdmin::~TAO_CEC_ConsumerAdmin (void) 00031 { 00032 } 00033 00034 void 00035 TAO_CEC_ConsumerAdmin::push (const CORBA::Any &event) 00036 { 00037 TAO_CEC_Propagate_Event_Push push_worker (event); 00038 00039 this->push_admin_.for_each (&push_worker); 00040 00041 TAO_CEC_Propagate_Event_Pull pull_worker (event); 00042 00043 this->pull_admin_.for_each (&pull_worker); 00044 } 00045 00046 void 00047 TAO_CEC_ConsumerAdmin::connected (TAO_CEC_ProxyPushSupplier *supplier) 00048 { 00049 this->push_admin_.connected (supplier); 00050 } 00051 00052 void 00053 TAO_CEC_ConsumerAdmin::reconnected (TAO_CEC_ProxyPushSupplier *supplier) 00054 { 00055 this->push_admin_.reconnected (supplier); 00056 } 00057 00058 void 00059 TAO_CEC_ConsumerAdmin::disconnected (TAO_CEC_ProxyPushSupplier *supplier) 00060 { 00061 this->push_admin_.disconnected (supplier); 00062 } 00063 00064 void 00065 TAO_CEC_ConsumerAdmin::connected (TAO_CEC_ProxyPullSupplier *supplier) 00066 { 00067 this->pull_admin_.connected (supplier); 00068 } 00069 00070 void 00071 TAO_CEC_ConsumerAdmin::reconnected (TAO_CEC_ProxyPullSupplier *supplier) 00072 { 00073 this->pull_admin_.reconnected (supplier); 00074 } 00075 00076 void 00077 TAO_CEC_ConsumerAdmin::disconnected (TAO_CEC_ProxyPullSupplier *supplier) 00078 { 00079 this->pull_admin_.disconnected (supplier); 00080 } 00081 00082 void 00083 TAO_CEC_ConsumerAdmin::shutdown (void) 00084 { 00085 this->push_admin_.shutdown (); 00086 00087 this->pull_admin_.shutdown (); 00088 } 00089 00090 CosEventChannelAdmin::ProxyPushSupplier_ptr 00091 TAO_CEC_ConsumerAdmin::obtain_push_supplier (void) 00092 { 00093 return this->push_admin_.obtain (); 00094 } 00095 00096 CosEventChannelAdmin::ProxyPullSupplier_ptr 00097 TAO_CEC_ConsumerAdmin::obtain_pull_supplier (void) 00098 { 00099 return this->pull_admin_.obtain (); 00100 } 00101 00102 PortableServer::POA_ptr 00103 TAO_CEC_ConsumerAdmin::_default_POA (void) 00104 { 00105 return PortableServer::POA::_duplicate (this->default_POA_.in ()); 00106 } 00107 00108 // **************************************************************** 00109 00110 void 00111 TAO_CEC_Propagate_Event_Push::work (TAO_CEC_ProxyPushSupplier *supplier) 00112 { 00113 supplier->push (this->event_); 00114 } 00115 00116 // **************************************************************** 00117 00118 void 00119 TAO_CEC_Propagate_Event_Pull::work (TAO_CEC_ProxyPullSupplier *supplier) 00120 { 00121 supplier->push (this->event_); 00122 } 00123 00124 TAO_END_VERSIONED_NAMESPACE_DECL