diff options
author | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-26 04:19:59 +0000 |
---|---|---|
committer | jai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2004-11-26 04:19:59 +0000 |
commit | 7cc0b46aefc7f67c804383c2111b7d9067f1162e (patch) | |
tree | 4ae43430def4f78df048d6f6e85b545f7008c80c | |
parent | 2da130704ab145a7b835269de2b946ccba4ab25c (diff) | |
download | ATCD-7cc0b46aefc7f67c804383c2111b7d9067f1162e.tar.gz |
*** empty log message ***
4 files changed, 23 insertions, 11 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h index 4ca372d803b..fff68f5965d 100644 --- a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h +++ b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h @@ -40,6 +40,8 @@ namespace CIAO create (PortableServer::ObjectId &oid) = 0; virtual void destroy (PortableServer::ObjectId &oid) = 0; + + virtual void update_destroy_count () = 0; protected: Session_Container *container_; diff --git a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp index 2f4907fa8cc..2302799beda 100644 --- a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp +++ b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp @@ -34,6 +34,18 @@ namespace CIAO typename EXEC, typename EXEC_VAR, typename COMP> + void Dynamic_Component_Servant<COMP_SVNT, COMP_EXEC, COMP_EXEC_VAR, + EXEC, EXEC_VAR, COMP>::update_destroy_count () + { + component_removed_ = 1; + } + + template <typename COMP_SVNT, + typename COMP_EXEC, + typename COMP_EXEC_VAR, + typename EXEC, + typename EXEC_VAR, + typename COMP> Dynamic_Component_Servant<COMP_SVNT, COMP_EXEC, COMP_EXEC_VAR, EXEC, EXEC_VAR, COMP>::~Dynamic_Component_Servant (void) { @@ -83,8 +95,6 @@ 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 (); diff --git a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.h b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.h index 4fa5f246b70..9e4c8828fc8 100644 --- a/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.h +++ b/TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.h @@ -49,6 +49,8 @@ namespace CIAO virtual void destroy (PortableServer::ObjectId &oid); + virtual void update_destroy_count (); + protected: Components::EnterpriseComponent_var executor_; Home_Servant_Impl_Base *home_servant_; diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp index 0422b0f7a06..b9a8c9f2427 100644 --- a/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp +++ b/TAO/CIAO/DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp @@ -54,6 +54,8 @@ namespace CIAO PortableServer::ObjectId_var oid = PortableServer::string_to_ObjectId (this->obj_id_); + this->container_->delete_servant_map (oid); + for (DYNAMIC_SERVANT_MAP_ITERATOR iter = this->dynamic_servant_map_.begin (); iter != end; ++iter) @@ -81,7 +83,7 @@ namespace CIAO COMP_EXEC, COMP_EXEC_VAR, COMP_SVNT>::remove_component ( - ::Components::CCMObject_ptr comp + ::Components::CCMObject_ptr ACE_ENV_ARG_DECL ) ACE_THROW_SPEC ((CORBA::SystemException, @@ -95,7 +97,6 @@ namespace CIAO { servant->destroy (oid); } - // this->container_->delete_servant_map (oid); } // Operations for keyless home interface. @@ -244,14 +245,11 @@ namespace CIAO COMP_SVNT>::update_component_map ( PortableServer::ObjectId &oid) { - /* Dynamic_Component_Servant_Base *servant; - if (dynamic_servant_map_.unbind (oid, servant) != 0) - { - ACE_DEBUG ((LM_DEBUG, "Invalid component object reference\n")); - return; - } - */ + if (this->dynamic_servant_map_.find (oid, servant) == 0) + { + servant->update_destroy_count (); + } return; } |