summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/.depend2
-rw-r--r--cpp/src/Ice/ObjectAdapterI.cpp6
-rw-r--r--cpp/src/Ice/Reference.cpp28
-rw-r--r--cpp/src/Ice/Reference.h8
-rw-r--r--cpp/src/Ice/ReferenceFactory.cpp36
-rw-r--r--cpp/src/Ice/ReferenceFactory.h4
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.
//