diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-10-19 13:54:35 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-10-19 13:54:35 +0000 |
commit | 5170fd4130df7f0bb1851b6da662c54fa9920deb (patch) | |
tree | 0ecc94a4017e7a1d91f8836d8bf4993f849adf87 /cpp/src/IceGrid/NodeSessionManager.cpp | |
parent | Fixes (diff) | |
download | ice-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.cpp | 18 |
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)); } } } |