diff options
author | Benoit Foucher <benoit@zeroc.com> | 2008-01-11 14:14:33 +0100 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2008-01-11 14:14:33 +0100 |
commit | 81255b93d09d5963eeb40dba272838650c939994 (patch) | |
tree | b977ac8538f1933f5ad7d7ff2a7229951108adfc /cpp/src/IceGrid/AdapterCache.cpp | |
parent | Allow third party software locations to be set from environment (diff) | |
download | ice-81255b93d09d5963eeb40dba272838650c939994.tar.bz2 ice-81255b93d09d5963eeb40dba272838650c939994.tar.xz ice-81255b93d09d5963eeb40dba272838650c939994.zip |
Fixed bug 2576
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.cpp')
-rw-r--r-- | cpp/src/IceGrid/AdapterCache.cpp | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp index e3bf7562803..446696fdcdf 100644 --- a/cpp/src/IceGrid/AdapterCache.cpp +++ b/cpp/src/IceGrid/AdapterCache.cpp @@ -230,16 +230,23 @@ ServerAdapterEntry::ServerAdapterEntry(AdapterCache& cache, } void -ServerAdapterEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& nReplicas, bool& replicaGroup) +ServerAdapterEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& nReplicas, bool& replicaGroup, + bool& roundRobin) { nReplicas = 1; replicaGroup = false; + roundRobin = false; LocatorAdapterInfo info; info.id = _id; info.proxy = _server->getAdapter(info.activationTimeout, info.deactivationTimeout, _id, true); adapters.push_back(info); } +void +ServerAdapterEntry::increaseRoundRobinCount(int roundRobinCount) +{ +} + float ServerAdapterEntry::getLeastLoadedNodeLoad(LoadSample loadSample) const { @@ -375,7 +382,8 @@ ReplicaGroupEntry::update(const LoadBalancingPolicyPtr& policy) } void -ReplicaGroupEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& nReplicas, bool& replicaGroup) +ReplicaGroupEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& nReplicas, bool& replicaGroup, + bool& roundRobin) { vector<ServerAdapterEntryPtr> replicas; bool adaptive = false; @@ -383,6 +391,7 @@ ReplicaGroupEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& n { Lock sync(*this); replicaGroup = true; + roundRobin = false; nReplicas = _loadBalancingNReplicas > 0 ? _loadBalancingNReplicas : static_cast<int>(_replicas.size()); if(_replicas.empty()) @@ -398,6 +407,7 @@ ReplicaGroupEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& n replicas.push_back(_replicas[(_lastReplica + i) % _replicas.size()]); } _lastReplica = (_lastReplica + 1) % static_cast<int>(_replicas.size()); + roundRobin = true; } else if(AdaptiveLoadBalancingPolicyPtr::dynamicCast(_loadBalancing)) { @@ -447,7 +457,8 @@ ReplicaGroupEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& n { int dummy; bool dummy2; - (*p)->getLocatorAdapterInfo(adapters, dummy, dummy2); + bool dummy3; + (*p)->getLocatorAdapterInfo(adapters, dummy, dummy2, dummy3); } catch(const AdapterNotExistException&) { @@ -461,6 +472,13 @@ ReplicaGroupEntry::getLocatorAdapterInfo(LocatorAdapterInfoSeq& adapters, int& n } } +void +ReplicaGroupEntry::increaseRoundRobinCount(int count) +{ + Lock sync(*this); + _lastReplica = (_lastReplica + count) % static_cast<int>(_replicas.size()); +} + float ReplicaGroupEntry::getLeastLoadedNodeLoad(LoadSample loadSample) const { |