diff options
author | bala <balanatarajan@users.noreply.github.com> | 2004-11-23 16:44:34 +0000 |
---|---|---|
committer | bala <balanatarajan@users.noreply.github.com> | 2004-11-23 16:44:34 +0000 |
commit | e72c120de7b11f9eeb735bd9e2e72fbbee8bd89c (patch) | |
tree | 013969f9eef193e938239ef8b571811404ba9db6 | |
parent | 1ee4d7cecd9d78a292ec17a036336913dea7e28f (diff) | |
download | ATCD-e72c120de7b11f9eeb735bd9e2e72fbbee8bd89c.tar.gz |
*** empty log message ***
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.cpp | 81 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.h | 17 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp | 13 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp | 5 |
4 files changed, 68 insertions, 48 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.cpp index 5719b35f507..daf454520bb 100644 --- a/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.cpp +++ b/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.cpp @@ -7,8 +7,8 @@ namespace CIAO { - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, @@ -31,8 +31,8 @@ namespace CIAO { } - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, @@ -48,8 +48,12 @@ namespace CIAO COMP_EXEC_VAR, COMP_SVNT>::~Home_Servant_Impl (void) { - const obj_iterator end (this->objref_map_.end ()); - for (obj_iterator iter (this->objref_map_.begin ()); + // @@ JAI if you have tyedefed something, please use all CAPS. + const obj_iterator end = + this->objref_map_.end (); + + for (obj_iterator iter = + this->objref_map_.begin (); iter != end; ++iter) { this->remove_component ((*iter).int_id_); @@ -58,8 +62,8 @@ namespace CIAO // Operations for CCMHome interface. - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, @@ -89,32 +93,45 @@ namespace CIAO Components::CCMObject_var ccm_obj_ptr; COMP_SVNT *servant = 0; - if (objref_map_.unbind (oid.in (), ccm_obj_ptr) == 0) - { - COMP_VAR _ciao_comp = COMP::_narrow (ccm_obj_ptr - ACE_ENV_ARG_PARAMETER); - ACE_CHECK; - if (CORBA::is_nil (_ciao_comp.in ())) + if (objref_map_.unbind (oid.in (), ccm_obj_ptr) != 0) { + // @@ JAI do error handling like printing out debug statements + // etc. + return; + } + + COMP_VAR _ciao_comp = + COMP::_narrow (ccm_obj_ptr + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + + if (CORBA::is_nil (_ciao_comp.in ())) + { + // @@ Jai, This should not be thrown by applications like + // this. Try a beter one, mostly CCM specific. ACE_THROW (CORBA::INTERNAL ()); } - _ciao_comp->remove (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - if (component_map_.unbind (oid.in (), servant) == 0) - { - PortableServer::ServantBase_var safe (servant); - servant->_ciao_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); - ACE_CHECK; - } + // @@ Jai, could you please add a line of documentation to say + // what this is supposed to be doing? + _ciao_comp->remove (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + + if (component_map_.unbind (oid.in (), servant) == 0) + { + + PortableServer::ServantBase_var safe (servant); + servant->_ciao_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); + ACE_CHECK; + } } } // Operations for keyless home interface. - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, @@ -140,8 +157,8 @@ namespace CIAO // Operations for implicit home interface. - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, @@ -183,8 +200,8 @@ namespace CIAO // CIAO-specific operations. - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, @@ -205,7 +222,7 @@ namespace CIAO ) ACE_THROW_SPEC ((CORBA::SystemException)) { - CORBA::Object_var hobj = + CORBA::Object_var hobj = this->container_->get_objref (this ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (COMP::_nil ()); @@ -240,7 +257,7 @@ namespace CIAO ACE_ENV_ARG_PARAMETER); ACE_CHECK_RETURN (Components::CCMObject::_nil ()); - this->objref_map_.bind (oid.in (), + this->objref_map_.bind (oid.in (), Components::CCMObject::_duplicate (ccmobjref.in ())); if (this->component_map_.bind (oid.in (), svt) == 0) @@ -251,8 +268,8 @@ namespace CIAO return ho._retn (); } - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, diff --git a/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.h b/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.h index 80e3489b71d..241f6e71338 100644 --- a/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.h +++ b/TAO/CIAO/DAnCE/ciao/Home_Servant_Impl_T.h @@ -40,8 +40,8 @@ namespace CIAO * This class implements operations * common to all generated home servants. */ - template <typename BASE_SKEL, - typename EXEC, + template <typename BASE_SKEL, + typename EXEC, typename EXEC_VAR, typename COMP, typename COMP_VAR, @@ -56,9 +56,9 @@ namespace CIAO public: Home_Servant_Impl (EXEC * exe, Session_Container * c); - + virtual ~Home_Servant_Impl (void); - + // Operations for CCMHome interface. virtual void @@ -66,7 +66,7 @@ namespace CIAO ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException, Components::RemoveFailure)); - + // Operations for keyless home interface. virtual ::Components::CCMObject_ptr @@ -88,7 +88,7 @@ namespace CIAO _ciao_activate_component (COMP_EXEC *exe ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); - + void _ciao_passivate_component (COMP *comp ACE_ENV_ARG_DECL_WITH_DEFAULTS) @@ -97,6 +97,10 @@ namespace CIAO protected: EXEC_VAR executor_; + + // @@ Jai, why do you need two maps? Can't you derive one from the + // other? Its a waste of memory to do TWO things if it can be done + // by one. ACE_Hash_Map_Manager_Ex<PortableServer::ObjectId, COMP_SVNT *, TAO_ObjectId_Hash, @@ -124,4 +128,3 @@ namespace CIAO #include /**/ "ace/post.h" #endif /* CIAO_HOME_SERVANT_IMPL_T_H */ - diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp index 6b63ff21788..3a293d042b3 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_Base.cpp @@ -61,16 +61,17 @@ namespace CIAO ACE_THROW_SPEC ((CORBA::SystemException, Components::RemoveFailure)) { + CORBA::Object_var objref = + this->container_->get_objref (this); - CORBA::Object_var objref = this->container_->get_objref (this); - Components::CCMObject_var ccmobjref = + Components::CCMObject_var ccmobjref = Components::CCMObject::_narrow (objref.in () ACE_ENV_ARG_PARAMETER); PortableServer::ObjectId_var oid; - this->container_->uninstall_component - (ccmobjref.in (), - oid.out () - ACE_ENV_ARG_PARAMETER); + + this->container_->uninstall_component ( ccmobjref.in (), + oid.out () + ACE_ENV_ARG_PARAMETER); } ::Components::ConnectionDescriptions * diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp index 4e39010461f..045d44b0040 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp @@ -209,6 +209,7 @@ namespace CIAO ) ACE_THROW_SPEC ((CORBA::SystemException)) { + // @@ Jai, could you please see why this is required? ::Components::SessionComponent_var temp = ::Components::SessionComponent::_narrow ( this->executor_.in () @@ -217,9 +218,7 @@ namespace CIAO ACE_CHECK; if (! ::CORBA::is_nil (temp.in ())) - { - temp->ccm_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); - } + temp->ccm_passivate (ACE_ENV_SINGLE_ARG_PARAMETER); } } |