summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ObjectAdapterI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp62
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);