diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp index c5e280e9b75..982ef04e1ee 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/Any/ProxyPushSupplier.cpp @@ -2,14 +2,11 @@ #include "ProxyPushSupplier.h" -#if ! defined (__ACE_INLINE__) -#include "ProxyPushSupplier.inl" -#endif /* __ACE_INLINE__ */ - ACE_RCSID (Notify, TAO_Notify_ProxyPushSupplier, "$Id$") #include "tao/debug.h" #include "PushConsumer.h" +#include "../Properties.h" TAO_Notify_ProxyPushSupplier::TAO_Notify_ProxyPushSupplier (void) { @@ -48,6 +45,8 @@ TAO_Notify_ProxyPushSupplier::connect_any_push_consumer (CosEventComm::PushConsu ACE_CHECK; this->connect (consumer ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + this->self_change (ACE_ENV_SINGLE_ARG_PARAMETER); } void @@ -57,6 +56,8 @@ TAO_Notify_ProxyPushSupplier::disconnect_push_supplier (ACE_ENV_SINGLE_ARG_DECL) )) { this->destroy (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + this->self_change (ACE_ENV_SINGLE_ARG_PARAMETER); } CosNotifyChannelAdmin::ProxyType @@ -67,3 +68,36 @@ TAO_Notify_ProxyPushSupplier::MyType (ACE_ENV_SINGLE_ARG_DECL_NOT_USED) { return CosNotifyChannelAdmin::PUSH_ANY; } + +const char * +TAO_Notify_ProxyPushSupplier::get_proxy_type_name (void) const +{ + return "proxy_push_supplier"; +} + +void +TAO_Notify_ProxyPushSupplier::load_attrs (const TAO_Notify::NVPList& attrs) +{ + SuperClass::load_attrs(attrs); + ACE_CString ior; + if (attrs.load("PeerIOR", ior) && ior.length() > 0) + { + CORBA::ORB_var orb = TAO_Notify_PROPERTIES::instance()->orb(); + ACE_DECLARE_NEW_CORBA_ENV; + ACE_TRY + { + CORBA::Object_var obj = orb->string_to_object(ior.c_str() ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + CosNotifyComm::PushConsumer_var pc = + CosNotifyComm::PushConsumer::_unchecked_narrow(obj.in() ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + this->connect_any_push_consumer(pc.in() ACE_ENV_ARG_PARAMETER); + ACE_TRY_CHECK; + } + ACE_CATCHANY + { + // if we can't reconnect, tough... + } + ACE_ENDTRY; + } +} |