summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/Reference.cpp
diff options
context:
space:
mode:
authorDwayne Boone <dwayne@zeroc.com>2009-10-26 14:55:24 -0230
committerDwayne Boone <dwayne@zeroc.com>2009-10-26 14:55:24 -0230
commit20899304e74276a6d9c12ae9f713901e6ebfc840 (patch)
tree5970a5ff612c59e4bc3147908756ec742a1d09aa /cpp/src/Ice/Reference.cpp
parentFixed Windows link error (diff)
downloadice-20899304e74276a6d9c12ae9f713901e6ebfc840.tar.bz2
ice-20899304e74276a6d9c12ae9f713901e6ebfc840.tar.xz
ice-20899304e74276a6d9c12ae9f713901e6ebfc840.zip
Bug 3137 - add proxyToProperty
Diffstat (limited to 'cpp/src/Ice/Reference.cpp')
-rw-r--r--cpp/src/Ice/Reference.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/cpp/src/Ice/Reference.cpp b/cpp/src/Ice/Reference.cpp
index a4e41555f85..b29b0843b1d 100644
--- a/cpp/src/Ice/Reference.cpp
+++ b/cpp/src/Ice/Reference.cpp
@@ -637,6 +637,15 @@ IceInternal::FixedReference::toString() const
return string(); // To keep the compiler from complaining.
}
+PropertyDict
+IceInternal::FixedReference::toProperty(const string&) const
+{
+ throw FixedProxyException(__FILE__, __LINE__);
+
+ assert(false); // Cannot be reached.
+ return PropertyDict(); // To keep the compiler from complaining.
+}
+
ConnectionIPtr
IceInternal::FixedReference::getConnection(bool& compress) const
{
@@ -1133,6 +1142,42 @@ IceInternal::RoutableReference::toString() const
return result;
}
+PropertyDict
+IceInternal::RoutableReference::toProperty(const string& prefix) const
+{
+ Ice::PropertyDict properties;
+
+ properties[prefix] = toString();
+ properties[prefix + ".CollocationOptimized"] = _collocationOptimized ? "1" : "0";
+ properties[prefix + ".ConnectionCached"] = _cacheConnection ? "1" : "0";
+ properties[prefix + ".PreferSecure"] = _preferSecure ? "1" : "0";
+ properties[prefix + ".EndpointSelection"] = _endpointSelection == Random ? "Random" : "Ordered";
+
+ ostringstream s;
+ s << _locatorCacheTimeout;
+ properties[prefix + ".LocatorCacheTimeout"] = s.str();
+
+ if(_routerInfo)
+ {
+ PropertyDict routerProperties = _routerInfo->getRouter()->__reference()->toProperty(prefix + ".Router");
+ for(PropertyDict::const_iterator p = routerProperties.begin(); p != routerProperties.end(); ++p)
+ {
+ properties[p->first] = p->second;
+ }
+ }
+
+ if(_locatorInfo)
+ {
+ PropertyDict locatorProperties = _locatorInfo->getLocator()->__reference()->toProperty(prefix + ".Locator");
+ for(PropertyDict::const_iterator p = locatorProperties.begin(); p != locatorProperties.end(); ++p)
+ {
+ properties[p->first] = p->second;
+ }
+ }
+
+ return properties;
+}
+
int
IceInternal::RoutableReference::hashInit() const
{