diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/.depend | 2 | ||||
-rw-r--r-- | cpp/src/Ice/ObjectAdapterI.cpp | 6 | ||||
-rw-r--r-- | cpp/src/Ice/Reference.cpp | 28 | ||||
-rw-r--r-- | cpp/src/Ice/Reference.h | 8 | ||||
-rw-r--r-- | cpp/src/Ice/ReferenceFactory.cpp | 36 | ||||
-rw-r--r-- | cpp/src/Ice/ReferenceFactory.h | 4 |
6 files changed, 58 insertions, 26 deletions
diff --git a/cpp/src/Ice/.depend b/cpp/src/Ice/.depend index 9b18a6c83f7..1cca53e9760 100644 --- a/cpp/src/Ice/.depend +++ b/cpp/src/Ice/.depend @@ -11,7 +11,7 @@ ConnectionMonitor$(OBJEXT): ConnectionMonitor.cpp ../Ice/ConnectionMonitor.h ../ Connection$(OBJEXT): Connection.cpp ../../include/Ice/Connection.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/Object.h ../../include/Ice/GCShared.h ../../include/Ice/IncomingAsyncF.h ../../include/IceUtil/Iterator.h ../../include/IceUtil/ScopedArray.h ../../include/IceUtil/DisableWarnings.h Connector$(OBJEXT): Connector.cpp ../Ice/Connector.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../Ice/ConnectorF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../Ice/TransceiverF.h Current$(OBJEXT): Current.cpp ../../include/Ice/Current.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/Object.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/GCShared.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/StreamF.h ../../include/IceUtil/Iterator.h ../../include/IceUtil/ScopedArray.h ../../include/IceUtil/DisableWarnings.h -DefaultsAndOverrides$(OBJEXT): DefaultsAndOverrides.cpp ../Ice/DefaultsAndOverrides.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../Ice/DefaultsAndOverridesF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/PropertiesF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/Properties.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/BuiltinSequences.h ../Ice/Network.h +DefaultsAndOverrides$(OBJEXT): DefaultsAndOverrides.cpp ../Ice/DefaultsAndOverrides.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../Ice/DefaultsAndOverridesF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/PropertiesF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/Endpoint.h ../../include/Ice/Properties.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/BuiltinSequences.h ../Ice/Network.h ../../include/Ice/LocalException.h Direct$(OBJEXT): Direct.cpp ../../include/Ice/Direct.h ../../include/Ice/ServantLocatorF.h ../../include/Ice/LocalObjectF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/IceUtil/Shared.h ../../include/Ice/UndefSysMacros.h ../../include/Ice/ReferenceF.h ../../include/Ice/Current.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../Ice/ObjectAdapterI.h ../../include/IceUtil/RecMutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Monitor.h ../../include/IceUtil/Cond.h ../../include/IceUtil/Time.h ../../include/Ice/ObjectAdapter.h ../../include/Ice/Proxy.h ../../include/IceUtil/Mutex.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/EndpointIF.h ../../include/Ice/Endpoint.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/Object.h ../../include/Ice/GCShared.h ../../include/Ice/IncomingAsyncF.h ../../include/Ice/Outgoing.h ../../include/Ice/BasicStream.h ../../include/Ice/InstanceF.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/OutgoingAsync.h ../../include/Ice/Incoming.h ../../include/Ice/ServantManagerF.h ../../include/Ice/IncomingAsync.h ../../include/Ice/UserExceptionFactory.h ../../include/Ice/FactoryTable.h ../../include/Ice/FactoryTableDef.h ../../include/IceUtil/StaticMutex.h ../../include/Ice/UserExceptionFactoryF.h ../../include/Ice/RouterF.h ../../include/Ice/LocatorF.h ../../include/Ice/FacetMap.h ../../include/Ice/Locator.h ../../include/Ice/ProcessF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/ConnectionFactoryF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ThreadPoolF.h ../../include/Ice/Process.h ../../include/Ice/BuiltinSequences.h ../Ice/ServantManager.h ../../include/Ice/ServantLocator.h ../Ice/Reference.h ../Ice/ReferenceFactoryF.h ../Ice/SharedContext.h ../../include/Ice/LocalException.h DynamicLibrary$(OBJEXT): DynamicLibrary.cpp ../../include/Ice/DynamicLibrary.h ../../include/Ice/DynamicLibraryF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/IceUtil/Exception.h ../../include/IceUtil/Config.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/IceUtil/Shared.h EndpointFactoryManager$(OBJEXT): EndpointFactoryManager.cpp ../Ice/EndpointFactoryManager.h ../../include/IceUtil/Shared.h ../../include/IceUtil/Config.h ../../include/IceUtil/Mutex.h ../../include/IceUtil/Lock.h ../../include/IceUtil/ThreadException.h ../../include/IceUtil/Exception.h ../../include/Ice/InstanceF.h ../../include/Ice/Handle.h ../../include/IceUtil/Handle.h ../../include/Ice/Config.h ../../include/Ice/ProxyHandle.h ../../include/Ice/EndpointIF.h ../../include/Ice/EndpointFactoryF.h ../Ice/EndpointFactoryManagerF.h ../../include/Ice/Endpoint.h ../../include/Ice/LocalObjectF.h ../../include/Ice/ProxyF.h ../../include/Ice/ObjectF.h ../../include/Ice/GCCountMap.h ../../include/Ice/Exception.h ../../include/Ice/LocalObject.h ../../include/Ice/UndefSysMacros.h ../Ice/UnknownEndpointI.h ../Ice/EndpointI.h ../Ice/TransceiverF.h ../Ice/ConnectorF.h ../Ice/AcceptorF.h ../../include/Ice/EndpointFactory.h ../../include/Ice/BasicStream.h ../../include/Ice/ObjectFactoryF.h ../../include/Ice/Buffer.h ../../include/Ice/Protocol.h ../../include/Ice/StringConverter.h ../../include/IceUtil/Unicode.h ../../include/Ice/LocalException.h ../../include/Ice/Proxy.h ../../include/Ice/ProxyFactoryF.h ../../include/Ice/ConnectionIF.h ../../include/Ice/ObjectAdapterF.h ../../include/Ice/ReferenceF.h ../../include/Ice/OutgoingAsyncF.h ../../include/Ice/Current.h ../../include/Ice/ConnectionF.h ../../include/Ice/Identity.h ../../include/Ice/StreamF.h ../../include/Ice/CommunicatorF.h ../../include/Ice/BuiltinSequences.h ../Ice/Instance.h ../../include/IceUtil/RecMutex.h ../../include/Ice/StatsF.h ../Ice/TraceLevelsF.h ../Ice/DefaultsAndOverridesF.h ../Ice/RouterInfoF.h ../Ice/LocatorInfoF.h ../Ice/ReferenceFactoryF.h ../Ice/ThreadPoolF.h ../../include/Ice/ConnectionFactoryF.h ../../include/Ice/ConnectionMonitorF.h ../Ice/ObjectFactoryManagerF.h ../../include/Ice/ObjectAdapterFactoryF.h ../../include/Ice/DynamicLibraryF.h ../../include/Ice/PluginF.h ../../include/Ice/Initialize.h ../../include/Ice/PropertiesF.h ../../include/Ice/LoggerF.h ../Ice/SharedContext.h ../Ice/ImplicitContextI.h ../../include/Ice/ImplicitContext.h ../../include/Ice/Properties.h ../Ice/DefaultsAndOverrides.h diff --git a/cpp/src/Ice/ObjectAdapterI.cpp b/cpp/src/Ice/ObjectAdapterI.cpp index feb6f4df9af..483ad0542a3 100644 --- a/cpp/src/Ice/ObjectAdapterI.cpp +++ b/cpp/src/Ice/ObjectAdapterI.cpp @@ -1026,7 +1026,8 @@ Ice::ObjectAdapterI::newDirectProxy(const Identity& ident, const string& facet) ReferencePtr ref = _instance->referenceFactory()->create( ident, _instance->getDefaultContext(), facet, Reference::ModeTwoway, false, _instance->defaultsAndOverrides()->defaultPreferSecure, endpoints, 0, - _instance->defaultsAndOverrides()->defaultCollocationOptimization); + _instance->defaultsAndOverrides()->defaultCollocationOptimization, true, + _instance->defaultsAndOverrides()->defaultEndpointSelection, _instance->threadPerConnection()); return _instance->proxyFactory()->referenceToProxy(ref); } @@ -1040,7 +1041,8 @@ Ice::ObjectAdapterI::newIndirectProxy(const Identity& ident, const string& facet ReferencePtr ref = _instance->referenceFactory()->create( ident, _instance->getDefaultContext(), facet, Reference::ModeTwoway, false, _instance->defaultsAndOverrides()->defaultPreferSecure, id, 0, - _locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, + _locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, true, + _instance->defaultsAndOverrides()->defaultEndpointSelection, _instance->threadPerConnection(), _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); // diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp index 2367353a48c..99308ff37af 100644 --- a/cpp/src/Ice/Reference.cpp +++ b/cpp/src/Ice/Reference.cpp @@ -1105,19 +1105,20 @@ IceInternal::RoutableReference::operator<(const Reference& r) const IceInternal::RoutableReference::RoutableReference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident, const SharedContextPtr& ctx, const string& fs, Mode md, bool sec, bool prefSec, const RouterInfoPtr& rtrInfo, - bool collocationOpt) : + bool collocationOpt, bool cacheConnection, + EndpointSelectionType endpointSelection, bool threadPerConnection) : Reference(inst, com, ident, ctx, fs, md), _secure(sec), _preferSecure(prefSec), _routerInfo(rtrInfo), _collocationOptimization(collocationOpt), - _cacheConnection(true), - _endpointSelection(Random), + _cacheConnection(cacheConnection), + _endpointSelection(endpointSelection), _overrideCompress(false), _compress(false), _overrideTimeout(false), _timeout(-1), - _threadPerConnection(inst->threadPerConnection()) + _threadPerConnection(threadPerConnection) { } @@ -1308,8 +1309,10 @@ void IceInternal::decRef(IceInternal::DirectReference* p) { p->__decRef(); } IceInternal::DirectReference::DirectReference(const InstancePtr& inst, const CommunicatorPtr& com, const Identity& ident, const SharedContextPtr& ctx, const string& fs, Mode md, bool sec, bool prefSec, const vector<EndpointIPtr>& endpts, - const RouterInfoPtr& rtrInfo, bool collocationOpt) : - RoutableReference(inst, com, ident, ctx, fs, md, sec, prefSec, rtrInfo, collocationOpt), + const RouterInfoPtr& rtrInfo, bool collocationOpt, bool cacheConnection, + EndpointSelectionType endpointSelection, bool threadPerConnection) : + RoutableReference(inst, com, ident, ctx, fs, md, sec, prefSec, rtrInfo, collocationOpt, cacheConnection, + endpointSelection, threadPerConnection), _endpoints(endpts) { } @@ -1408,7 +1411,8 @@ IceInternal::DirectReference::changeAdapterId(const string& newAdapterId) const return getInstance()->referenceFactory()->create(getIdentity(), getContext(), getFacet(), getMode(), getSecure(), getPreferSecure(), newAdapterId, getRouterInfo(), locatorInfo, getCollocationOptimization(), - getLocatorCacheTimeout()); + getCacheConnection(), getEndpointSelection(), + getThreadPerConnection(), getLocatorCacheTimeout()); } else { @@ -1561,8 +1565,11 @@ IceInternal::IndirectReference::IndirectReference(const InstancePtr& inst, const const Identity& ident, const SharedContextPtr& ctx, const string& fs, Mode md, bool sec, bool prefSec, const string& adptid, const RouterInfoPtr& rtrInfo, const LocatorInfoPtr& locInfo, - bool collocationOpt, int locatorCacheTimeout) : - RoutableReference(inst, com, ident, ctx, fs, md, sec, prefSec, rtrInfo, collocationOpt), + bool collocationOpt, bool cacheConnection, + EndpointSelectionType endpointSelection, bool threadPerConnection, + int locatorCacheTimeout) : + RoutableReference(inst, com, ident, ctx, fs, md, sec, prefSec, rtrInfo, collocationOpt, cacheConnection, + endpointSelection, threadPerConnection), _adapterId(adptid), _locatorInfo(locInfo), _locatorCacheTimeout(locatorCacheTimeout) @@ -1625,7 +1632,8 @@ IceInternal::IndirectReference::changeEndpoints(const vector<EndpointIPtr>& newE { return getInstance()->referenceFactory()->create(getIdentity(), getContext(), getFacet(), getMode(), getSecure(), getPreferSecure(), newEndpoints, getRouterInfo(), - getCollocationOptimization()); + getCollocationOptimization(), getCacheConnection(), + getEndpointSelection(), getThreadPerConnection()); } else { diff --git a/cpp/src/Ice/Reference.h b/cpp/src/Ice/Reference.h index ec0e14c2736..bd88dcc6826 100644 --- a/cpp/src/Ice/Reference.h +++ b/cpp/src/Ice/Reference.h @@ -238,7 +238,8 @@ public: protected: RoutableReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, - const std::string&, Mode, bool, bool, const RouterInfoPtr&, bool); + const std::string&, Mode, bool, bool, const RouterInfoPtr&, bool, bool, + Ice::EndpointSelectionType, bool); RoutableReference(const RoutableReference&); Ice::ConnectionIPtr createConnection(const std::vector<EndpointIPtr>&, bool&) const; @@ -266,7 +267,8 @@ class DirectReference : public RoutableReference public: DirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, - const std::string&, Mode, bool, bool, const std::vector<EndpointIPtr>&, const RouterInfoPtr&, bool); + const std::string&, Mode, bool, bool, const std::vector<EndpointIPtr>&, const RouterInfoPtr&, bool, + bool, Ice::EndpointSelectionType, bool); virtual Type getType() const; virtual int getLocatorCacheTimeout() const; @@ -306,7 +308,7 @@ public: IndirectReference(const InstancePtr&, const Ice::CommunicatorPtr&, const Ice::Identity&, const SharedContextPtr&, const std::string&, Mode, bool, bool, const std::string&, const RouterInfoPtr&, - const LocatorInfoPtr&, bool, int); + const LocatorInfoPtr&, bool, bool, Ice::EndpointSelectionType, bool, int); virtual LocatorInfoPtr getLocatorInfo() const { return _locatorInfo; } diff --git a/cpp/src/Ice/ReferenceFactory.cpp b/cpp/src/Ice/ReferenceFactory.cpp index 360e4f38725..9e2105beaa7 100644 --- a/cpp/src/Ice/ReferenceFactory.cpp +++ b/cpp/src/Ice/ReferenceFactory.cpp @@ -59,7 +59,10 @@ IceInternal::ReferenceFactory::create(const Identity& ident, bool preferSecure, const vector<EndpointIPtr>& endpoints, const RouterInfoPtr& routerInfo, - bool collocationOptimization) + bool collocationOptimization, + bool cacheConnection, + EndpointSelectionType endpointSelection, + bool threadPerConnection) { IceUtil::Mutex::Lock sync(*this); @@ -77,7 +80,8 @@ IceInternal::ReferenceFactory::create(const Identity& ident, // Create new reference // return new DirectReference(_instance, _communicator, ident, context, facet, mode, secure, preferSecure, - endpoints, routerInfo, collocationOptimization); + endpoints, routerInfo, collocationOptimization, cacheConnection, endpointSelection, + threadPerConnection); } ReferencePtr @@ -91,6 +95,9 @@ IceInternal::ReferenceFactory::create(const Identity& ident, const RouterInfoPtr& routerInfo, const LocatorInfoPtr& locatorInfo, bool collocationOptimization, + bool cacheConnection, + EndpointSelectionType endpointSelection, + bool threadPerConnection, int locatorCacheTimeout) { IceUtil::Mutex::Lock sync(*this); @@ -109,7 +116,8 @@ IceInternal::ReferenceFactory::create(const Identity& ident, // Create new reference // return new IndirectReference(_instance, _communicator, ident, context, facet, mode, secure, preferSecure, - adapterId, routerInfo, locatorInfo, collocationOptimization, locatorCacheTimeout); + adapterId, routerInfo, locatorInfo, collocationOptimization, cacheConnection, + endpointSelection, threadPerConnection, locatorCacheTimeout); } ReferencePtr @@ -425,7 +433,8 @@ IceInternal::ReferenceFactory::create(const string& str) return create(ident, _instance->getDefaultContext(), facet, mode, secure, _instance->defaultsAndOverrides()->defaultPreferSecure, "", routerInfo, locatorInfo, _instance->defaultsAndOverrides()->defaultCollocationOptimization, - _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); + true, _instance->defaultsAndOverrides()->defaultEndpointSelection, + _instance->threadPerConnection(), _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); } vector<EndpointIPtr> endpoints; @@ -479,7 +488,9 @@ IceInternal::ReferenceFactory::create(const string& str) return create(ident, _instance->getDefaultContext(), facet, mode, secure, _instance->defaultsAndOverrides()->defaultPreferSecure, endpoints, routerInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization); + _instance->defaultsAndOverrides()->defaultCollocationOptimization, true, + _instance->defaultsAndOverrides()->defaultEndpointSelection, + _instance->threadPerConnection()); break; } case '@': @@ -531,7 +542,8 @@ IceInternal::ReferenceFactory::create(const string& str) return create(ident, _instance->getDefaultContext(), facet, mode, secure, _instance->defaultsAndOverrides()->defaultPreferSecure, adapter, routerInfo, locatorInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization, + _instance->defaultsAndOverrides()->defaultCollocationOptimization, true, + _instance->defaultsAndOverrides()->defaultEndpointSelection, _instance->threadPerConnection(), _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); break; } @@ -615,6 +627,12 @@ IceInternal::ReferenceFactory::createFromProperties(const string& propertyPrefix ref = ref->changeCollocationOptimization(properties->getPropertyAsInt(property) > 0); } + property = propertyPrefix + ".ThreadPerConnection"; + if(!properties->getProperty(property).empty()) + { + ref = ref->changeThreadPerConnection(properties->getPropertyAsInt(property) > 0); + } + return ref; } @@ -676,14 +694,16 @@ IceInternal::ReferenceFactory::create(const Identity& ident, BasicStream* s) } return create(ident, _instance->getDefaultContext(), facet, mode, secure, _instance->defaultsAndOverrides()->defaultPreferSecure, endpoints, routerInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization); + _instance->defaultsAndOverrides()->defaultCollocationOptimization, true, + _instance->defaultsAndOverrides()->defaultEndpointSelection, _instance->threadPerConnection()); } else { s->read(adapterId); return create(ident, _instance->getDefaultContext(), facet, mode, secure, _instance->defaultsAndOverrides()->defaultPreferSecure, adapterId, routerInfo, locatorInfo, - _instance->defaultsAndOverrides()->defaultCollocationOptimization, + _instance->defaultsAndOverrides()->defaultCollocationOptimization, true, + _instance->defaultsAndOverrides()->defaultEndpointSelection, _instance->threadPerConnection(), _instance->defaultsAndOverrides()->defaultLocatorCacheTimeout); } } diff --git a/cpp/src/Ice/ReferenceFactory.h b/cpp/src/Ice/ReferenceFactory.h index eee494602b0..cea63de6757 100644 --- a/cpp/src/Ice/ReferenceFactory.h +++ b/cpp/src/Ice/ReferenceFactory.h @@ -33,13 +33,13 @@ public: // ReferencePtr create(const ::Ice::Identity&, const SharedContextPtr&, const ::std::string&, Reference::Mode, bool, bool, const ::std::vector<EndpointIPtr>&, - const RouterInfoPtr&, bool); + const RouterInfoPtr&, bool, bool, Ice::EndpointSelectionType, bool); // // Create an indirect reference. // ReferencePtr create(const ::Ice::Identity&, const SharedContextPtr&, const ::std::string&, Reference::Mode, bool, bool, const ::std::string&, - const RouterInfoPtr&, const LocatorInfoPtr&, bool, int); + const RouterInfoPtr&, const LocatorInfoPtr&, bool, bool, Ice::EndpointSelectionType, bool, int); // // Create a fixed reference. // |