diff options
Diffstat (limited to 'TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp')
-rw-r--r-- | TAO/CIAO/DAnCE/ciao/Servant_Activator.cpp | 39 |
1 files changed, 34 insertions, 5 deletions
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 (), |