00001 // CEC_ConsumerAdmin.cpp,v 1.15 2006/03/14 06:14:24 jtc Exp 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.i" 00013 #endif /* __ACE_INLINE__ */ 00014 00015 ACE_RCSID (CosEvent, 00016 CEC_ConsumerAdmin, 00017 "CEC_ConsumerAdmin.cpp,v 1.15 2006/03/14 06:14:24 jtc Exp") 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 ACE_ENV_ARG_DECL) 00037 { 00038 TAO_CEC_Propagate_Event_Push push_worker (event); 00039 00040 this->push_admin_.for_each (&push_worker 00041 ACE_ENV_ARG_PARAMETER); 00042 ACE_CHECK; 00043 00044 TAO_CEC_Propagate_Event_Pull pull_worker (event); 00045 00046 this->pull_admin_.for_each (&pull_worker 00047 ACE_ENV_ARG_PARAMETER); 00048 ACE_CHECK; 00049 } 00050 00051 void 00052 TAO_CEC_ConsumerAdmin::connected (TAO_CEC_ProxyPushSupplier *supplier 00053 ACE_ENV_ARG_DECL) 00054 { 00055 this->push_admin_.connected (supplier ACE_ENV_ARG_PARAMETER); 00056 } 00057 00058 void 00059 TAO_CEC_ConsumerAdmin::reconnected (TAO_CEC_ProxyPushSupplier *supplier 00060 ACE_ENV_ARG_DECL) 00061 { 00062 this->push_admin_.reconnected (supplier ACE_ENV_ARG_PARAMETER); 00063 } 00064 00065 void 00066 TAO_CEC_ConsumerAdmin::disconnected (TAO_CEC_ProxyPushSupplier *supplier 00067 ACE_ENV_ARG_DECL) 00068 { 00069 this->push_admin_.disconnected (supplier ACE_ENV_ARG_PARAMETER); 00070 } 00071 00072 void 00073 TAO_CEC_ConsumerAdmin::connected (TAO_CEC_ProxyPullSupplier *supplier 00074 ACE_ENV_ARG_DECL) 00075 { 00076 this->pull_admin_.connected (supplier ACE_ENV_ARG_PARAMETER); 00077 } 00078 00079 void 00080 TAO_CEC_ConsumerAdmin::reconnected (TAO_CEC_ProxyPullSupplier *supplier 00081 ACE_ENV_ARG_DECL) 00082 { 00083 this->pull_admin_.reconnected (supplier ACE_ENV_ARG_PARAMETER); 00084 } 00085 00086 void 00087 TAO_CEC_ConsumerAdmin::disconnected (TAO_CEC_ProxyPullSupplier *supplier 00088 ACE_ENV_ARG_DECL) 00089 { 00090 this->pull_admin_.disconnected (supplier ACE_ENV_ARG_PARAMETER); 00091 } 00092 00093 void 00094 TAO_CEC_ConsumerAdmin::shutdown (ACE_ENV_SINGLE_ARG_DECL) 00095 { 00096 this->push_admin_.shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); 00097 ACE_CHECK; 00098 00099 this->pull_admin_.shutdown (ACE_ENV_SINGLE_ARG_PARAMETER); 00100 ACE_CHECK; 00101 } 00102 00103 CosEventChannelAdmin::ProxyPushSupplier_ptr 00104 TAO_CEC_ConsumerAdmin::obtain_push_supplier (ACE_ENV_SINGLE_ARG_DECL) 00105 ACE_THROW_SPEC ((CORBA::SystemException)) 00106 { 00107 return this->push_admin_.obtain (ACE_ENV_SINGLE_ARG_PARAMETER); 00108 } 00109 00110 CosEventChannelAdmin::ProxyPullSupplier_ptr 00111 TAO_CEC_ConsumerAdmin::obtain_pull_supplier (ACE_ENV_SINGLE_ARG_DECL) 00112 ACE_THROW_SPEC ((CORBA::SystemException)) 00113 { 00114 return this->pull_admin_.obtain (ACE_ENV_SINGLE_ARG_PARAMETER); 00115 } 00116 00117 PortableServer::POA_ptr 00118 TAO_CEC_ConsumerAdmin::_default_POA (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) 00119 { 00120 return PortableServer::POA::_duplicate (this->default_POA_.in ()); 00121 } 00122 00123 // **************************************************************** 00124 00125 void 00126 TAO_CEC_Propagate_Event_Push::work (TAO_CEC_ProxyPushSupplier *supplier 00127 ACE_ENV_ARG_DECL) 00128 { 00129 supplier->push (this->event_ ACE_ENV_ARG_PARAMETER); 00130 } 00131 00132 // **************************************************************** 00133 00134 void 00135 TAO_CEC_Propagate_Event_Pull::work (TAO_CEC_ProxyPullSupplier *supplier 00136 ACE_ENV_ARG_DECL) 00137 { 00138 supplier->push (this->event_ ACE_ENV_ARG_PARAMETER); 00139 } 00140 00141 TAO_END_VERSIONED_NAMESPACE_DECL