summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/ESF
diff options
context:
space:
mode:
authorJohnny Willemsen <jwillemsen@remedy.nl>2003-06-07 08:53:32 +0000
committerJohnny Willemsen <jwillemsen@remedy.nl>2003-06-07 08:53:32 +0000
commitbfb6a6b7469d3f7bcfb3f7519870437f762fae7e (patch)
tree42ab7df74e148231a4e4defe08a63a8cb78ea525 /TAO/orbsvcs/orbsvcs/ESF
parent19923004638add27768ae76eb3037d62d267cfb2 (diff)
downloadATCD-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.cpp8
-rw-r--r--TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.h14
-rw-r--r--TAO/orbsvcs/orbsvcs/ESF/ESF_Proxy_Admin.i17
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 ();
+ }
+}
+