From 7cc0b46aefc7f67c804383c2111b7d9067f1162e Mon Sep 17 00:00:00 2001 From: jai Date: Fri, 26 Nov 2004 04:19:59 +0000 Subject: *** empty log message *** --- TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_Base.h | 2 ++ TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.cpp | 14 ++++++++++++-- TAO/CIAO/DAnCE/ciao/Dynamic_Component_Servant_T.h | 2 ++ TAO/CIAO/DAnCE/ciao/Swapping_Servant_Home_Impl_T.cpp | 16 +++++++--------- 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 @@ -28,6 +28,18 @@ namespace CIAO { } + template + void Dynamic_Component_Servant::update_destroy_count () + { + component_removed_ = 1; + } + template 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; } -- cgit v1.2.1