summaryrefslogtreecommitdiff
path: root/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp')
-rw-r--r--TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp34
1 files changed, 31 insertions, 3 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp
index 8805a78d271..2277645ae55 100644
--- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp
+++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp
@@ -18,6 +18,9 @@ namespace CIAO
Session_Container * c
)
: Servant_Impl_Base (home, home_servant, c),
+ activated_ (0),
+ pre_activated_ (0),
+ post_activated_ (0),
executor_ (EXEC::_duplicate (exe))
{
}
@@ -172,7 +175,11 @@ namespace CIAO
if (! ::CORBA::is_nil (temp.in ()))
{
- temp->ciao_preactivate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ if (this->pre_activated_ == 0)
+ {
+ this->pre_activated_ = 1;
+ temp->ciao_preactivate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
}
}
@@ -194,7 +201,11 @@ namespace CIAO
if (! ::CORBA::is_nil (temp.in ()))
{
- temp->ccm_activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ if (this->activated_ == 0)
+ {
+ this->activated_ = 1;
+ temp->ccm_activate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
}
}
@@ -217,7 +228,11 @@ namespace CIAO
if (! ::CORBA::is_nil (temp.in ()))
{
- temp->ciao_postactivate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ if (this->post_activated_ == 0)
+ {
+ this->post_activated_ = 1;
+ temp->ciao_postactivate (ACE_ENV_SINGLE_ARG_PARAMETER);
+ }
}
}
@@ -225,6 +240,19 @@ namespace CIAO
typename EXEC,
typename EXEC_VAR,
typename CONTEXT>
+ CORBA::Boolean
+ Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::is_activated (
+ ACE_ENV_SINGLE_ARG_DECL
+ )
+ ACE_THROW_SPEC ((CORBA::SystemException))
+ {
+ return this->pre_activated_;
+ }
+
+ template <typename BASE_SKEL,
+ typename EXEC,
+ typename EXEC_VAR,
+ typename CONTEXT>
void
Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::_ciao_passivate (
ACE_ENV_SINGLE_ARG_DECL