summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/ReferenceFactory.cpp
diff options
context:
space:
mode:
authorMark Spruiell <mes@zeroc.com>2007-01-26 16:58:00 +0000
committerMark Spruiell <mes@zeroc.com>2007-01-26 16:58:00 +0000
commit71f7fff702750e9b779f645d21075562e5c80a40 (patch)
tree0f059491911ecc5ea3f6c680b0ae05d0f67e7bfd /cpp/src/Ice/ReferenceFactory.cpp
parentSynced with other assemby files (diff)
downloadice-71f7fff702750e9b779f645d21075562e5c80a40.tar.bz2
ice-71f7fff702750e9b779f645d21075562e5c80a40.tar.xz
ice-71f7fff702750e9b779f645d21075562e5c80a40.zip
preserve proxy settings for CacheConnection, EndpointSelection,
ThreadPerConnection
Diffstat (limited to 'cpp/src/Ice/ReferenceFactory.cpp')
-rw-r--r--cpp/src/Ice/ReferenceFactory.cpp36
1 files changed, 28 insertions, 8 deletions
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);
}
}