diff options
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 62 |
1 files changed, 43 insertions, 19 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index 2d9e2927400..a6605882ef9 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -289,12 +289,18 @@ Ice::ObjectAdapterI::waitForDeactivate() ObjectPrx Ice::ObjectAdapterI::add(const ObjectPtr& object, const Identity& ident) { + return addFacet(object, ident, ""); +} + +ObjectPrx +Ice::ObjectAdapterI::addFacet(const ObjectPtr& object, const Identity& ident, const string& facet) +{ IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); checkForDeactivation(); checkIdentity(ident); - _servantManager->addServant(object, ident); + _servantManager->addServant(object, ident, facet); return newProxy(ident); } @@ -302,6 +308,12 @@ Ice::ObjectAdapterI::add(const ObjectPtr& object, const Identity& ident) ObjectPrx Ice::ObjectAdapterI::addWithUUID(const ObjectPtr& object) { + return addFacetWithUUID(object, ""); +} + +ObjectPrx +Ice::ObjectAdapterI::addFacetWithUUID(const ObjectPtr& object, const string& facet) +{ Identity ident; ident.name = IceUtil::generateUUID(); return add(object, ident); @@ -310,54 +322,66 @@ Ice::ObjectAdapterI::addWithUUID(const ObjectPtr& object) void Ice::ObjectAdapterI::remove(const Identity& ident) { + removeFacet(ident, ""); +} + +void +Ice::ObjectAdapterI::removeFacet(const Identity& ident, const string& facet) +{ IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); checkForDeactivation(); checkIdentity(ident); - _servantManager->removeServant(ident); + _servantManager->removeServant(ident, facet); } -void -Ice::ObjectAdapterI::addServantLocator(const ServantLocatorPtr& locator, const string& prefix) +ObjectPtr +Ice::ObjectAdapterI::find(const Identity& ident) +{ + return findFacet(ident, ""); +} + +ObjectPtr +Ice::ObjectAdapterI::findFacet(const Identity& ident, const string& facet) { IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); checkForDeactivation(); + checkIdentity(ident); - _servantManager->addServantLocator(locator, prefix); + return _servantManager->findServant(ident, facet); } -ServantLocatorPtr -Ice::ObjectAdapterI::findServantLocator(const string& prefix) +ObjectPtr +Ice::ObjectAdapterI::findByProxy(const ObjectPrx& proxy) { IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); checkForDeactivation(); - return _servantManager->findServantLocator(prefix); + ReferencePtr ref = proxy->__reference(); + return findFacet(ref->identity, ref->facet); } -ObjectPtr -Ice::ObjectAdapterI::identityToServant(const Identity& ident) +void +Ice::ObjectAdapterI::addServantLocator(const ServantLocatorPtr& locator, const string& prefix) { IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); checkForDeactivation(); - checkIdentity(ident); - return _servantManager->findServant(ident); + _servantManager->addServantLocator(locator, prefix); } -ObjectPtr -Ice::ObjectAdapterI::proxyToServant(const ObjectPrx& proxy) +ServantLocatorPtr +Ice::ObjectAdapterI::findServantLocator(const string& prefix) { IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this); checkForDeactivation(); - ReferencePtr ref = proxy->__reference(); - return identityToServant(ref->identity); + return _servantManager->findServantLocator(prefix); } ObjectPrx @@ -395,7 +419,7 @@ Ice::ObjectAdapterI::createReverseProxy(const Identity& ident) // reference. // vector<EndpointPtr> endpoints; - ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), vector<string>(), Reference::ModeTwoway, + ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), "", Reference::ModeTwoway, false, "", endpoints, 0, 0, this, true); return _instance->proxyFactory()->referenceToProxy(ref); } @@ -730,7 +754,7 @@ Ice::ObjectAdapterI::newProxy(const Identity& ident) const // Create a reference with the adapter id. // vector<EndpointPtr> endpoints; - ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), vector<string>(), + ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), "", Reference::ModeTwoway, false, _id, endpoints, 0, _locatorInfo, 0, true); @@ -763,7 +787,7 @@ Ice::ObjectAdapterI::newDirectProxy(const Identity& ident) const // // Create a reference and return a proxy for this reference. // - ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), vector<string>(), Reference::ModeTwoway, + ReferencePtr ref = _instance->referenceFactory()->create(ident, Context(), "", Reference::ModeTwoway, false, "", endpoints, 0, _locatorInfo, 0, true); return _instance->proxyFactory()->referenceToProxy(ref); |