diff options
author | Benoit Foucher <benoit@zeroc.com> | 2014-04-15 09:41:21 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2014-04-15 09:41:21 +0200 |
commit | 54884a0b4c139118fc49498b6d6715d7d9ab718c (patch) | |
tree | 1f00091ad68543b3dc9828f27e32c0d9f7d072fe /cpp/src/IceGrid/LocatorI.cpp | |
parent | VC11 fixes for PHP 5.5 (diff) | |
download | ice-54884a0b4c139118fc49498b6d6715d7d9ab718c.tar.bz2 ice-54884a0b4c139118fc49498b6d6715d7d9ab718c.tar.xz ice-54884a0b4c139118fc49498b6d6715d7d9ab718c.zip |
Added support for IceGrid custom load balancing
Diffstat (limited to 'cpp/src/IceGrid/LocatorI.cpp')
-rw-r--r-- | cpp/src/IceGrid/LocatorI.cpp | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/cpp/src/IceGrid/LocatorI.cpp b/cpp/src/IceGrid/LocatorI.cpp index 896677cf429..8795606790e 100644 --- a/cpp/src/IceGrid/LocatorI.cpp +++ b/cpp/src/IceGrid/LocatorI.cpp @@ -464,14 +464,16 @@ public: const LocatorIPtr& locator, const DatabasePtr database, const string& id, - const Ice::EncodingVersion& encoding, + const Ice::Current& current, const LocatorAdapterInfoSeq& adapters, int count) : _amdCB(amdCB), _locator(locator), _database(database), _id(id), - _encoding(encoding), + _encoding(current.encoding), + _connection(current.con), + _context(current.ctx), _adapters(adapters), _traceLevels(locator->getTraceLevels()), _count(count), @@ -650,8 +652,8 @@ private: { if(!_waitForActivation) { - _database->getLocatorAdapterInfo(_id, _adapters, _count, replicaGroup, roundRobin, - _activatingOrFailed); + _database->getLocatorAdapterInfo(_id, _connection, _context, _adapters, _count, replicaGroup, + roundRobin, _activatingOrFailed); } if(_waitForActivation || (_adapters.empty() && _activatingOrFailed.size() > _failed.size())) @@ -660,7 +662,8 @@ private: // If there are no more adapters to try and some servers were being activated, we // try again but this time we wait for the server activation. // - _database->getLocatorAdapterInfo(_id, _adapters, _count, replicaGroup, roundRobin, _failed); + _database->getLocatorAdapterInfo(_id, _connection, _context, _adapters, _count, replicaGroup, + roundRobin, _failed); _waitForActivation = true; } break; @@ -740,6 +743,8 @@ private: const DatabasePtr _database; const std::string _id; const Ice::EncodingVersion _encoding; + const Ice::ConnectionPtr _connection; + const Ice::Context _context; LocatorAdapterInfoSeq _adapters; const TraceLevelsPtr _traceLevels; int _count; @@ -863,7 +868,8 @@ LocatorI::findAdapterById_async(const Ice::AMD_Locator_findAdapterByIdPtr& cb, { try { - _database->getLocatorAdapterInfo(id, adapters, count, replicaGroup, roundRobin); + _database->getLocatorAdapterInfo(id, current.con, current.ctx, adapters, count, replicaGroup, + roundRobin); break; } catch(const SynchronizationException&) @@ -878,7 +884,7 @@ LocatorI::findAdapterById_async(const Ice::AMD_Locator_findAdapterByIdPtr& cb, RequestPtr request; if(roundRobin) { - request = new RoundRobinRequest(cb, self, _database, id, current.encoding, adapters, count); + request = new RoundRobinRequest(cb, self, _database, id, current, adapters, count); } else if(replicaGroup) { @@ -916,7 +922,7 @@ LocatorI::findAdapterById_async(const Ice::AMD_Locator_findAdapterByIdPtr& cb, try { - cb->ice_response(_database->getAdapterDirectProxy(id, current.encoding)); + cb->ice_response(_database->getAdapterDirectProxy(id, current.encoding, current.con, current.ctx)); } catch(const AdapterNotExistException&) { |