diff options
Diffstat (limited to 'TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp')
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp index db7d58ba2f7..2f4907fa8cc 100644 --- a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp +++ b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp @@ -23,7 +23,8 @@ namespace CIAO :Dynamic_Component_Servant_Base (c), executor_ (Components::EnterpriseComponent::_duplicate (ec)), home_servant_ (home_servant), - home_ (Components::CCMHome::_duplicate (home)) + home_ (Components::CCMHome::_duplicate (home)), + component_removed_ (0) { } @@ -52,7 +53,9 @@ namespace CIAO if (this->servant_map_.find (oid, servant) == 0) { servant->remove (); + component_removed_ = 1; } + ACE_DEBUG ((LM_DEBUG, "flag at remove is %d\n", component_removed_)); } template <typename COMP_SVNT, @@ -80,6 +83,15 @@ namespace CIAO COMP_SVNT *svt = new COMP_SVNT(ciao_comp.in (), this->home_.in (), this->home_servant_, this->container_); + ACE_DEBUG ((LM_DEBUG, "i am creating the servant\n")); + ACE_DEBUG ((LM_DEBUG, "flag is %d\n", component_removed_)); + if (component_removed_ == 1) + { + svt->ciao_preactivate (); + svt->ciao_activate (); + svt->ciao_postactivate (); + component_removed_ = 0; + } PortableServer::ServantBase_var safe (svt); this->servant_map_.bind (oid, svt); return safe._retn (); |