diff options
author | Johnny Willemsen <jwillemsen@remedy.nl> | 2003-06-07 08:53:32 +0000 |
---|---|---|
committer | Johnny Willemsen <jwillemsen@remedy.nl> | 2003-06-07 08:53:32 +0000 |
commit | bfb6a6b7469d3f7bcfb3f7519870437f762fae7e (patch) | |
tree | 42ab7df74e148231a4e4defe08a63a8cb78ea525 /TAO/orbsvcs/orbsvcs/ESF | |
parent | 19923004638add27768ae76eb3037d62d267cfb2 (diff) | |
download | ATCD-bfb6a6b7469d3f7bcfb3f7519870437f762fae7e.tar.gz |
ChangeLogTag: Sat Jun 07 08:50:12 UTC 2003 Johnny Willemsen <jwillemsen@remedy.nl>
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/ESF')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.cpp | 8 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.h | 14 | ||||
-rw-r--r-- | TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.i | 17 |
3 files changed, 36 insertions, 3 deletions
diff --git a/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.cpp b/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.cpp index a4bbb416902..b74bb231759 100644 --- a/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.cpp +++ b/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.cpp @@ -36,12 +36,14 @@ TAO_ESF_Proxy_Admin<EVENT_CHANNEL,PROXY,INTERFACE>:: PROXY* proxy; this->event_channel_->create_proxy (proxy); - PortableServer::ServantBase_var holder = proxy; + TAO_ESF_RefCountedRef<PROXY> holder (proxy); - ACE_TYPENAME PROXY::_var_type result = - proxy->activate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_TYPENAME PROXY::_ptr_type r; + proxy->activate (r ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (INTERFACE::_nil ()); + ACE_TYPENAME PROXY::_var_type result = r; + this->collection_->connected (proxy ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (INTERFACE::_nil ()); diff --git a/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.h b/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.h index dfe39ce311e..babfd4a4fcc 100644 --- a/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.h +++ b/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.h @@ -132,6 +132,20 @@ private: }; // **************************************************************** +template <class COUNTED> +class TAO_ESF_RefCountedRef +{ +public: + TAO_ESF_RefCountedRef (COUNTED *counted); + ~TAO_ESF_RefCountedRef (); +private: + TAO_ESF_RefCountedRef (TAO_ESF_RefCountedRef<COUNTED> const & ); + TAO_ESF_RefCountedRef& operator= (TAO_ESF_RefCountedRef<COUNTED> const & ); + + COUNTED *counted_; +}; + +// **************************************************************** #if defined (__ACE_INLINE__) #include "ESF_Proxy_Admin.i" diff --git a/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.i b/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.i index 9eec0894754..f6b4d29bc6f 100644 --- a/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.i +++ b/TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.i @@ -8,3 +8,20 @@ TAO_ESF_Proxy_Admin<EC,P,I>:: { this->collection_->for_each (worker ACE_ENV_ARG_PARAMETER); } + +template <class C> +ACE_INLINE +TAO_ESF_RefCountedRef<C>::TAO_ESF_RefCountedRef (C *counted) + : counted_ (counted) +{} + +template <class C> +ACE_INLINE +TAO_ESF_RefCountedRef<C>::~TAO_ESF_RefCountedRef () +{ + if (this->counted_ != 0) + { + this->counted_->_decr_refcnt (); + } +} + |