diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp | 83 |
1 files changed, 8 insertions, 75 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp index c1512e55bcb..559434320de 100644 --- a/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp +++ b/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp @@ -35,58 +35,16 @@ void TAO_EC_ProxyPushConsumer::connected (TAO_EC_ProxyPushSupplier* supplier, CORBA::Environment &ACE_TRY_ENV) { - TAO_EC_SupplierFiltering* filter = 0; - { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->is_connected_i () == 0) - return; - - filter = this->filter_; - filter->_incr_refcnt (); - } - - filter->connected (supplier, ACE_TRY_ENV); - - { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - filter->_decr_refcnt (); - } + if (this->is_connected ()) + this->filter_->connected (supplier, ACE_TRY_ENV); } void TAO_EC_ProxyPushConsumer::disconnected (TAO_EC_ProxyPushSupplier* supplier, CORBA::Environment &ACE_TRY_ENV) { - TAO_EC_SupplierFiltering* filter = 0; - { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->is_connected_i () == 0) - return; - - filter = this->filter_; - filter->_incr_refcnt (); - } - - filter->disconnected (supplier, ACE_TRY_ENV); - - { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - filter->_decr_refcnt (); - } + if (this->is_connected ()) + this->filter_->disconnected (supplier, ACE_TRY_ENV); } void @@ -136,7 +94,7 @@ TAO_EC_ProxyPushConsumer::cleanup_i (void) RtecEventComm::PushSupplier::_nil (); this->filter_->unbind (this); - this->filter_->_decr_refcnt (); + this->event_channel_->supplier_filter_builder ()->destroy (this->filter_); this->filter_ = 0; } @@ -231,37 +189,12 @@ void TAO_EC_ProxyPushConsumer::push (const RtecEventComm::EventSet& event, CORBA::Environment &ACE_TRY_ENV) { - TAO_EC_SupplierFiltering* filter = 0; - { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - - if (this->is_connected_i () == 0) - return; // @@ THROW something??? - - filter = this->filter_; - filter->_incr_refcnt (); - - this->refcount_++; - } + if (this->is_connected () == 0) + return; // @@ THROW something??? // No need to keep the lock, the filter_ class is supposed to be // thread safe.... - filter->push (event, ACE_TRY_ENV); - - { - ACE_GUARD_THROW_EX ( - ACE_Lock, ace_mon, *this->lock_, - RtecEventChannelAdmin::EventChannel::SYNCHRONIZATION_ERROR ()); - ACE_CHECK; - filter->_decr_refcnt (); - this->refcount_--; - if (this->refcount_ != 0) - return; - } - this->event_channel_->destroy_proxy_push_consumer (this); + this->filter_->push (event, ACE_TRY_ENV); } void |