diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp index e964dff0d62..8569a30bdb7 100644 --- a/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp +++ b/TAO/orbsvcs/orbsvcs/Notify/ProxySupplier.cpp @@ -2,6 +2,7 @@ #include "ProxySupplier.h" #include "Event_Manager.h" +#include "Admin.h" #if ! defined (__ACE_INLINE__) #include "ProxySupplier.inl" @@ -9,6 +10,8 @@ ACE_RCSID(RT_Notify, TAO_NS_ProxySupplier, "$Id$") +#include "Method_Request_Dispatch_No_Filtering.h" + TAO_NS_ProxySupplier::TAO_NS_ProxySupplier (void) :consumer_ (0) { @@ -16,7 +19,6 @@ TAO_NS_ProxySupplier::TAO_NS_ProxySupplier (void) TAO_NS_ProxySupplier::~TAO_NS_ProxySupplier () { - this->consumer_->_decr_refcnt (); } void @@ -24,6 +26,12 @@ TAO_NS_ProxySupplier::init_ps (ACE_ENV_SINGLE_ARG_DECL) { } +TAO_NS_Peer* +TAO_NS_ProxySupplier:: peer (void) +{ + return this->consumer (); +} + void TAO_NS_ProxySupplier::connect (TAO_NS_Consumer *consumer ACE_ENV_ARG_DECL) ACE_THROW_SPEC (( @@ -41,6 +49,11 @@ TAO_NS_ProxySupplier::connect (TAO_NS_Consumer *consumer ACE_ENV_ARG_DECL) { consumer_ = consumer; + consumer->event_dispatch_observer (this->event_manager_->event_dispatch_observer ()); + consumer->updates_dispatch_observer (this->event_manager_->updates_dispatch_observer ()); + + this->parent_->subscribed_types (this->subscribed_types_); // get the parents subscribed types. + event_manager_->subscribe (this, this->subscribed_types_ ACE_ENV_ARG_PARAMETER); } } @@ -49,6 +62,9 @@ void TAO_NS_ProxySupplier::disconnect (ACE_ENV_SINGLE_ARG_DECL) { event_manager_->un_subscribe (this, this->subscribed_types_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + this->consumer_->_decr_refcnt (); } void @@ -61,7 +77,7 @@ TAO_NS_ProxySupplier::shutdown (ACE_ENV_SINGLE_ARG_DECL) //@@ inform the consumer that its disconnected? } -void +void TAO_NS_ProxySupplier::push (TAO_NS_Event_var &event) { TAO_NS_Method_Request_Dispatch request (event, this); @@ -69,3 +85,10 @@ TAO_NS_ProxySupplier::push (TAO_NS_Event_var &event) this->worker_task ()->exec (request); } +void +TAO_NS_ProxySupplier::push_no_filtering (TAO_NS_Event_var &event) +{ + TAO_NS_Method_Request_Dispatch_No_Filtering request (event, this); + + this->worker_task ()->exec (request); +} |