summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp')
-rw-r--r--TAO/orbsvcs/orbsvcs/Event/EC_ProxyConsumer.cpp83
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