diff options
Diffstat (limited to 'cpp/src/Ice/ObjectAdapterI.cpp')
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 117 |
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; |