diff options
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/Event/ECG_Mcast_EH.inl')
-rw-r--r-- | trunk/TAO/orbsvcs/orbsvcs/Event/ECG_Mcast_EH.inl | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/Event/ECG_Mcast_EH.inl b/trunk/TAO/orbsvcs/orbsvcs/Event/ECG_Mcast_EH.inl new file mode 100644 index 00000000000..587c2721944 --- /dev/null +++ b/trunk/TAO/orbsvcs/orbsvcs/Event/ECG_Mcast_EH.inl @@ -0,0 +1,63 @@ +// -*- C++ -*- +// +// $Id$ + +TAO_BEGIN_VERSIONED_NAMESPACE_DECL + +ACE_INLINE +TAO_ECG_Mcast_EH:: +Observer_Disconnect_Command::Observer_Disconnect_Command (void) + : handle_ () + , ec_ () +{ +} + +ACE_INLINE +TAO_ECG_Mcast_EH:: +Observer_Disconnect_Command::Observer_Disconnect_Command ( + RtecEventChannelAdmin::Observer_Handle handle, + RtecEventChannelAdmin::EventChannel_ptr ec) + : handle_ (handle) + , ec_ (RtecEventChannelAdmin::EventChannel::_duplicate (ec)) +{ +} + +ACE_INLINE +TAO_ECG_Mcast_EH:: +Observer_Disconnect_Command::Observer_Disconnect_Command ( + const Observer_Disconnect_Command & rhs) + : handle_ (rhs.handle_) + , ec_ (RtecEventChannelAdmin::EventChannel::_duplicate (rhs.ec_.in())) +{ +} + +ACE_INLINE +TAO_ECG_Mcast_EH::Observer_Disconnect_Command & +TAO_ECG_Mcast_EH:: +Observer_Disconnect_Command::operator= ( + const Observer_Disconnect_Command & rhs) +{ + this->handle_ = rhs.handle_; + this->ec_ = RtecEventChannelAdmin::EventChannel::_duplicate (rhs.ec_.in()); + + return *this; +} + +ACE_INLINE void +TAO_ECG_Mcast_EH:: +Observer_Disconnect_Command::execute (ACE_ENV_SINGLE_ARG_DECL) +{ + if (CORBA::is_nil (this->ec_.in ())) + // We are not connected. + return; + + RtecEventChannelAdmin::EventChannel_var release_ec = + this->ec_._retn (); + + release_ec->remove_observer (this->handle_ ACE_ENV_ARG_PARAMETER); + ACE_CHECK; +} + +//*************************************************************************** + +TAO_END_VERSIONED_NAMESPACE_DECL |