diff options
Diffstat (limited to 'TAO/CIAO/DAnCE/ciao')
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Container_Base.cpp | 8 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Container_Base.h | 4 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp | 39 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Activator.h | 4 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp | 23 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h | 4 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp | 16 | ||||
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Swapping_Container.h | 6 |
8 files changed, 99 insertions, 5 deletions
diff --git a/TAO/CIAO/DAnCE/ciao/Container_Base.cpp b/TAO/CIAO/DAnCE/ciao/Container_Base.cpp index f9d737b548e..cdd2d5b9e89 100644 --- a/TAO/CIAO/DAnCE/ciao/Container_Base.cpp +++ b/TAO/CIAO/DAnCE/ciao/Container_Base.cpp @@ -422,6 +422,14 @@ namespace CIAO } void + Session_Container::deactivate_facet (PortableServer::ObjectId &oid + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + ACE_THROW_RETURN (CORBA::NO_IMPLEMENT (), 0); + } + + void Session_Container::delete_servant_map (PortableServer::ObjectId & ACE_ENV_ARG_DECL) diff --git a/TAO/CIAO/DAnCE/ciao/Container_Base.h b/TAO/CIAO/DAnCE/ciao/Container_Base.h index 2385b0a0a61..2ee12e2d46c 100644 --- a/TAO/CIAO/DAnCE/ciao/Container_Base.h +++ b/TAO/CIAO/DAnCE/ciao/Container_Base.h @@ -246,6 +246,10 @@ namespace CIAO virtual void delete_servant_map (PortableServer::ObjectId &oid ACE_ENV_ARG_DECL); + virtual void deactivate_facet (PortableServer::ObjectId &oid + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + virtual CORBA::Object_ptr get_home_objref (PortableServer::Servant p ACE_ENV_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp index 03899555bfd..cdd1c8d18b0 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp +++ b/TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp @@ -36,6 +36,33 @@ namespace CIAO } } + bool + Servant_Activator::update_port_activator ( + const PortableServer::ObjectId &oid + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + CORBA::String_var str = + PortableServer::ObjectId_to_string (oid); + { + ACE_GUARD_RETURN (TAO_SYNCH_MUTEX, + guard, + this->mutex_, + 0); + const unsigned int sz = this->slot_index_; + for (unsigned int t = 0; t != sz; ++t) + { + Port_Activator *&tmp = this->pa_[t]; + if (ACE_OS::strcmp (tmp->name (), str.in ()) == 0) + { + delete tmp; + --this->slot_index_; + } + } + } + return true; + } + PortableServer::Servant Servant_Activator::incarnate (const PortableServer::ObjectId &oid, PortableServer::POA_ptr @@ -78,11 +105,13 @@ namespace CIAO } if (ACE_OS::strcmp (tmp->name (), str.in ()) == 0) - // We should try avoiding making outbound calls with the - // lock held. Oh well, let us get some sense of sanity in - // CIAO to do think about these. - return this->pa_[t]->activate (oid - ACE_ENV_ARG_PARAMETER); + { + // We should try avoiding making outbound calls with the + // lock held. Oh well, let us get some sense of sanity in + // CIAO to do think about these. + return this->pa_[t]->activate (oid + ACE_ENV_ARG_PARAMETER); + } } } ACE_THROW_RETURN (CORBA::OBJECT_NOT_EXIST (), diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Activator.h b/TAO/CIAO/DAnCE/ciao/Servant_Activator.h index a9f75028a67..d7242ae791c 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Activator.h +++ b/TAO/CIAO/DAnCE/ciao/Servant_Activator.h @@ -55,6 +55,10 @@ namespace CIAO virtual ~Servant_Activator (void); + bool update_port_activator (const PortableServer::ObjectId &oid + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + /// Template methods overridden to get callbacks. /** * If you would like to know the details of the following two diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp index 2277645ae55..7aee4159153 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.cpp @@ -161,6 +161,29 @@ namespace CIAO typename EXEC_VAR, typename CONTEXT> void + Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::activate_component ( + ACE_ENV_SINGLE_ARG_DECL + ) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + if (this->is_activated () == 0) + { + this->ciao_preactivate ( + ACE_ENV_SINGLE_ARG_PARAMETER); + + this->ciao_activate ( + ACE_ENV_SINGLE_ARG_PARAMETER); + + this->ciao_postactivate ( + ACE_ENV_SINGLE_ARG_PARAMETER); + } + } + + template <typename BASE_SKEL, + typename EXEC, + typename EXEC_VAR, + typename CONTEXT> + void Servant_Impl<BASE_SKEL, EXEC, EXEC_VAR, CONTEXT>::ciao_preactivate ( ACE_ENV_SINGLE_ARG_DECL ) diff --git a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h index 246bcdbef35..e507fe8d93f 100644 --- a/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h +++ b/TAO/CIAO/DAnCE/ciao/Servant_Impl_T.h @@ -95,6 +95,10 @@ namespace CIAO is_activated (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) ACE_THROW_SPEC ((CORBA::SystemException)); + void + activate_component (ACE_ENV_SINGLE_ARG_DECL_WITH_DEFAULTS) + ACE_THROW_SPEC ((CORBA::SystemException)); + protected: CORBA::Boolean activated_; diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp b/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp index 087e269815b..18c4f4ed71c 100644 --- a/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp +++ b/TAO/CIAO/DAnCE/ciao/Swapping_Container.cpp @@ -32,6 +32,12 @@ namespace CIAO return this->home_servant_poa_.in (); } + PortableServer::POA_ptr + Swapping_Container::the_facet_cons_POA (void) const + { + return this->facet_cons_poa_.in (); + } + CORBA::Object_ptr Swapping_Container::get_home_objref (PortableServer::Servant p ACE_ENV_ARG_DECL) @@ -41,6 +47,16 @@ namespace CIAO ACE_ENV_ARG_PARAMETER); } + void + Swapping_Container::deactivate_facet (PortableServer::ObjectId &oid + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)) + { + this->the_facet_cons_POA ()->deactivate_object (oid + ACE_ENV_ARG_PARAMETER); + ACE_CHECK; + } + int Swapping_Container::init (const char *name, const CORBA::PolicyList *more_policies diff --git a/TAO/CIAO/DAnCE/ciao/Swapping_Container.h b/TAO/CIAO/DAnCE/ciao/Swapping_Container.h index 3372d356b3e..7f822143845 100644 --- a/TAO/CIAO/DAnCE/ciao/Swapping_Container.h +++ b/TAO/CIAO/DAnCE/ciao/Swapping_Container.h @@ -74,8 +74,14 @@ namespace CIAO virtual void delete_servant_map (PortableServer::ObjectId &oid ACE_ENV_ARG_DECL); + virtual void deactivate_facet (PortableServer::ObjectId &oid + ACE_ENV_ARG_DECL) + ACE_THROW_SPEC ((CORBA::SystemException)); + PortableServer::POA_ptr the_home_servant_POA (void) const; + PortableServer::POA_ptr the_facet_cons_POA (void) const; + private: /// Create POA for the component. |