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.cpp117
1 files changed, 90 insertions, 27 deletions
diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp
index 220811dda07..4f30f82b3a5 100644
--- a/cpp/src/Ice/ObjectAdapterI.cpp
+++ b/cpp/src/Ice/ObjectAdapterI.cpp
@@ -95,8 +95,16 @@ Ice::ObjectAdapterI::activate()
//
if(_state != StateUninitialized)
{
+#ifdef ICE_CPP11_MAPPING
+ for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ factory->activate();
+ });
+#else
for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
Ice::voidMemFun(&IncomingConnectionFactory::activate));
+#endif
return;
}
@@ -148,9 +156,16 @@ Ice::ObjectAdapterI::activate()
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
assert(_state == StateActivating);
+#ifdef ICE_CPP11_MAPPING
+ for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ factory->activate();
+ });
+#else
for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
Ice::voidMemFun(&IncomingConnectionFactory::activate));
-
+#endif
_state = StateActive;
notifyAll();
}
@@ -164,8 +179,16 @@ Ice::ObjectAdapterI::hold()
checkForDeactivation();
_state = StateHeld;
+#ifdef ICE_CPP11_MAPPING
+ for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ factory->hold();
+ });
+#else
for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
Ice::voidMemFun(&IncomingConnectionFactory::hold));
+#endif
}
void
@@ -180,8 +203,16 @@ Ice::ObjectAdapterI::waitForHold()
incomingConnectionFactories = _incomingConnectionFactories;
}
+#ifdef ICE_CPP11_MAPPING
+ for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ factory->waitUntilHolding();
+ });
+#else
for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
Ice::constVoidMemFun(&IncomingConnectionFactory::waitUntilHolding));
+#endif
}
void
@@ -240,15 +271,23 @@ Ice::ObjectAdapterI::deactivate()
// Connection::destroy() might block when sending a CloseConnection
// message.
//
+#ifdef ICE_CPP11_MAPPING
+ for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ factory->destroy();
+ });
+#else
for_each(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
Ice::voidMemFun(&IncomingConnectionFactory::destroy));
+#endif
//
// Must be called outside the thread synchronization, because
// changing the object adapter might block if there are still
// requests being dispatched.
//
- _instance->outgoingConnectionFactory()->removeAdapter(this);
+ _instance->outgoingConnectionFactory()->removeAdapter(ICE_SHARED_FROM_THIS);
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -285,8 +324,16 @@ Ice::ObjectAdapterI::waitForDeactivate()
// Now we wait until all incoming connection factories are
// finished.
//
+#ifdef ICE_CPP11_MAPPING
+ for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ factory->waitUntilFinished();
+ });
+#else
for_each(incomingConnectionFactories.begin(), incomingConnectionFactories.end(),
Ice::voidMemFun(&IncomingConnectionFactory::waitUntilFinished));
+#endif
}
bool
@@ -343,7 +390,7 @@ Ice::ObjectAdapterI::destroy()
if(_objectAdapterFactory)
{
- _objectAdapterFactory->removeObjectAdapter(this);
+ _objectAdapterFactory->removeObjectAdapter(ICE_SHARED_FROM_THIS);
}
{
@@ -372,13 +419,13 @@ Ice::ObjectAdapterI::destroy()
}
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::add(const ObjectPtr& object, const Identity& ident)
{
return addFacet(object, ident, "");
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::addFacet(const ObjectPtr& object, const Identity& ident, const string& facet)
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -392,13 +439,13 @@ Ice::ObjectAdapterI::addFacet(const ObjectPtr& object, const Identity& ident, co
return newProxy(ident, facet);
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::addWithUUID(const ObjectPtr& object)
{
return addFacetWithUUID(object, "");
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::addFacetWithUUID(const ObjectPtr& object, const string& facet)
{
Identity ident;
@@ -484,7 +531,7 @@ Ice::ObjectAdapterI::findAllFacets(const Identity& ident) const
}
ObjectPtr
-Ice::ObjectAdapterI::findByProxy(const ObjectPrx& proxy) const
+Ice::ObjectAdapterI::findByProxy(const ObjectPrxPtr& proxy) const
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -534,7 +581,7 @@ Ice::ObjectAdapterI::findServantLocator(const string& prefix) const
return _servantManager->findServantLocator(prefix);
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::createProxy(const Identity& ident) const
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -545,7 +592,7 @@ Ice::ObjectAdapterI::createProxy(const Identity& ident) const
return newProxy(ident, "");
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::createDirectProxy(const Identity& ident) const
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -556,7 +603,7 @@ Ice::ObjectAdapterI::createDirectProxy(const Identity& ident) const
return newDirectProxy(ident, "");
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::createIndirectProxy(const Identity& ident) const
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -568,7 +615,7 @@ Ice::ObjectAdapterI::createIndirectProxy(const Identity& ident) const
}
void
-Ice::ObjectAdapterI::setLocator(const LocatorPrx& locator)
+Ice::ObjectAdapterI::setLocator(const LocatorPrxPtr& locator)
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -577,7 +624,7 @@ Ice::ObjectAdapterI::setLocator(const LocatorPrx& locator)
_locatorInfo = _instance->locatorManager()->get(locator);
}
-LocatorPrx
+LocatorPrxPtr
Ice::ObjectAdapterI::getLocator() const
{
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
@@ -635,7 +682,15 @@ Ice::ObjectAdapterI::getEndpoints() const
EndpointSeq endpoints;
transform(_incomingConnectionFactories.begin(), _incomingConnectionFactories.end(),
- back_inserter(endpoints), Ice::constMemFun(&IncomingConnectionFactory::endpoint));
+ back_inserter(endpoints),
+#ifdef ICE_CPP11_MAPPING
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ return factory->endpoint();
+ });
+#else
+ Ice::constMemFun(&IncomingConnectionFactory::endpoint));
+#endif
return endpoints;
}
@@ -650,7 +705,7 @@ Ice::ObjectAdapterI::getPublishedEndpoints() const
}
bool
-Ice::ObjectAdapterI::isLocal(const ObjectPrx& proxy) const
+Ice::ObjectAdapterI::isLocal(const ObjectPrxPtr& proxy) const
{
//
// NOTE: it's important that isLocal() doesn't perform any blocking operations as
@@ -752,7 +807,15 @@ Ice::ObjectAdapterI::updateConnectionObservers()
IceUtil::Monitor<IceUtil::RecMutex>::Lock sync(*this);
f = _incomingConnectionFactories;
}
+#ifdef ICE_CPP11_MAPPING
+ for_each(f.begin(), f.end(),
+ [](const IncomingConnectionFactoryPtr& factory)
+ {
+ factory->updateConnectionObservers();
+ });
+#else
for_each(f.begin(), f.end(), Ice::voidMemFun(&IncomingConnectionFactory::updateConnectionObservers));
+#endif
}
void
@@ -842,7 +905,7 @@ Ice::ObjectAdapterI::getACM() const
//
Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const CommunicatorPtr& communicator,
const ObjectAdapterFactoryPtr& objectAdapterFactory, const string& name,
- /*const RouterPrx& router,*/ bool noConfig) :
+ /*const RouterPrxPtr& router,*/ bool noConfig) :
_state(StateUninitialized),
_instance(instance),
_communicator(communicator),
@@ -856,7 +919,7 @@ Ice::ObjectAdapterI::ObjectAdapterI(const InstancePtr& instance, const Communica
}
void
-Ice::ObjectAdapterI::initialize(const RouterPrx& router)
+Ice::ObjectAdapterI::initialize(const RouterPrxPtr& router)
{
if(_noConfig)
{
@@ -944,8 +1007,8 @@ Ice::ObjectAdapterI::initialize(const RouterPrx& router)
if(!router)
{
- const_cast<RouterPrx&>(router) = RouterPrx::uncheckedCast(
- _instance->proxyFactory()->propertyToProxy(_name + ".Router"));
+ const_cast<RouterPrxPtr&>(router) = ICE_UNCHECKED_CAST(RouterPrx,
+ _instance->proxyFactory()->propertyToProxy(_name + ".Router"));
}
if(router)
{
@@ -976,7 +1039,7 @@ Ice::ObjectAdapterI::initialize(const RouterPrx& router)
// new outgoing connections to the router's client proxy will
// use this object adapter for callbacks.
//
- _routerInfo->setAdapter(this);
+ _routerInfo->setAdapter(ICE_SHARED_FROM_THIS);
//
// Also modify all existing outgoing connections to the
@@ -996,7 +1059,7 @@ Ice::ObjectAdapterI::initialize(const RouterPrx& router)
vector<EndpointIPtr> endpoints = parseEndpoints(properties->getProperty(_name + ".Endpoints"), true);
for(vector<EndpointIPtr>::iterator p = endpoints.begin(); p != endpoints.end(); ++p)
{
- IncomingConnectionFactoryPtr factory = new IncomingConnectionFactory(_instance, *p, this);
+ IncomingConnectionFactoryPtr factory = ICE_MAKE_SHARED(IncomingConnectionFactory, _instance, *p, ICE_SHARED_FROM_THIS);
factory->initialize();
_incomingConnectionFactories.push_back(factory);
}
@@ -1019,7 +1082,7 @@ Ice::ObjectAdapterI::initialize(const RouterPrx& router)
if(!properties->getProperty(_name + ".Locator").empty())
{
- setLocator(LocatorPrx::uncheckedCast(_instance->proxyFactory()->propertyToProxy(_name + ".Locator")));
+ setLocator(ICE_UNCHECKED_CAST(LocatorPrx, _instance->proxyFactory()->propertyToProxy(_name + ".Locator")));
}
else
{
@@ -1054,7 +1117,7 @@ Ice::ObjectAdapterI::~ObjectAdapterI()
}
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::newProxy(const Identity& ident, const string& facet) const
{
if(_id.empty())
@@ -1071,7 +1134,7 @@ Ice::ObjectAdapterI::newProxy(const Identity& ident, const string& facet) const
}
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::newDirectProxy(const Identity& ident, const string& facet) const
{
vector<EndpointIPtr> endpoints = _publishedEndpoints;
@@ -1090,7 +1153,7 @@ Ice::ObjectAdapterI::newDirectProxy(const Identity& ident, const string& facet)
return _instance->proxyFactory()->referenceToProxy(ref);
}
-ObjectPrx
+ObjectPrxPtr
Ice::ObjectAdapterI::newIndirectProxy(const Identity& ident, const string& facet, const string& id) const
{
//
@@ -1238,14 +1301,14 @@ ObjectAdapterI::parsePublishedEndpoints()
}
void
-ObjectAdapterI::updateLocatorRegistry(const IceInternal::LocatorInfoPtr& locatorInfo, const Ice::ObjectPrx& proxy)
+ObjectAdapterI::updateLocatorRegistry(const IceInternal::LocatorInfoPtr& locatorInfo, const Ice::ObjectPrxPtr& proxy)
{
if(_id.empty() || !locatorInfo)
{
return; // Nothing to update.
}
- LocatorRegistryPrx locatorRegistry = locatorInfo->getLocatorRegistry();
+ LocatorRegistryPrxPtr locatorRegistry = locatorInfo->getLocatorRegistry();
if(!locatorRegistry)
{
return;