summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/CommunicatorI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Ice/CommunicatorI.cpp')
-rw-r--r--cpp/src/Ice/CommunicatorI.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/cpp/src/Ice/CommunicatorI.cpp b/cpp/src/Ice/CommunicatorI.cpp
index b8e9fdd0c39..168c2a02b7e 100644
--- a/cpp/src/Ice/CommunicatorI.cpp
+++ b/cpp/src/Ice/CommunicatorI.cpp
@@ -81,12 +81,20 @@ Ice::CommunicatorI::proxyToString(const ObjectPrx& proxy)
ObjectAdapterPtr
Ice::CommunicatorI::createObjectAdapter(const string& name)
{
+ RecMutex::Lock sync(*this);
+ if (!_instance)
+ {
+ throw CommunicatorDestroyedException(__FILE__, __LINE__);
+ }
+
ObjectAdapterPtr adapter = createObjectAdapterFromProperty(name, "Ice.Adapter." + name + ".Endpoints");
+
string router = _instance->properties()->getProperty("Ice.Adapter." + name + ".Router");
if (!router.empty())
{
adapter->addRouter(RouterPrx::uncheckedCast(_instance->proxyFactory()->stringToProxy(router)));
}
+
return adapter;
}
@@ -98,6 +106,7 @@ Ice::CommunicatorI::createObjectAdapterFromProperty(const string& name, const st
{
throw CommunicatorDestroyedException(__FILE__, __LINE__);
}
+
string endpts = _instance->properties()->getProperty(property);
return createObjectAdapterWithEndpoints(name, endpts);
}
@@ -110,6 +119,7 @@ Ice::CommunicatorI::createObjectAdapterWithEndpoints(const string& name, const s
{
throw CommunicatorDestroyedException(__FILE__, __LINE__);
}
+
return _instance->objectAdapterFactory()->createObjectAdapter(name, endpts);
}