summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/NodeSessionManager.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-10-19 13:54:35 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-10-19 13:54:35 +0000
commit5170fd4130df7f0bb1851b6da662c54fa9920deb (patch)
tree0ecc94a4017e7a1d91f8836d8bf4993f849adf87 /cpp/src/IceGrid/NodeSessionManager.cpp
parentFixes (diff)
downloadice-5170fd4130df7f0bb1851b6da662c54fa9920deb.tar.bz2
ice-5170fd4130df7f0bb1851b6da662c54fa9920deb.tar.xz
ice-5170fd4130df7f0bb1851b6da662c54fa9920deb.zip
Fix
Diffstat (limited to 'cpp/src/IceGrid/NodeSessionManager.cpp')
-rw-r--r--cpp/src/IceGrid/NodeSessionManager.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/cpp/src/IceGrid/NodeSessionManager.cpp b/cpp/src/IceGrid/NodeSessionManager.cpp
index d27cbc4c315..5823e73a379 100644
--- a/cpp/src/IceGrid/NodeSessionManager.cpp
+++ b/cpp/src/IceGrid/NodeSessionManager.cpp
@@ -422,22 +422,32 @@ NodeSessionManager::createdSession(const NodeSessionPrx& session)
else
{
replicas.clear();
- set<Ice::ObjectPrx> proxies;
+ map<Ice::Identity, Ice::ObjectPrx> proxies;
for(vector<QueryPrx>::const_iterator p = _queryObjects.begin(); p != _queryObjects.end(); ++p)
{
try
{
Ice::ObjectProxySeq prxs = (*p)->findAllObjectsByType(InternalRegistry::ice_staticId());
- proxies.insert(prxs.begin(), prxs.end());
+ for(Ice::ObjectProxySeq::const_iterator q = prxs.begin(); q != prxs.end(); ++q)
+ {
+ //
+ // NOTE: We might override a good proxy
+ // here! We could improve this to make
+ // sure that we don't override the proxy
+ // for replica N if that proxy was
+ // obtained from replica N.
+ //
+ proxies[(*q)->ice_getIdentity()] = *q;
+ }
}
catch(const Ice::LocalException&)
{
// IGNORE
}
}
- for(set<Ice::ObjectPrx>::const_iterator q = proxies.begin(); q != proxies.end(); ++q)
+ for(map<Ice::Identity, Ice::ObjectPrx>::const_iterator q = proxies.begin(); q != proxies.end(); ++q)
{
- replicas.push_back(InternalRegistryPrx::uncheckedCast(*q));
+ replicas.push_back(InternalRegistryPrx::uncheckedCast(q->second));
}
}
}