summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdapterCache.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2008-01-11 14:14:33 +0100
committerBenoit Foucher <benoit@zeroc.com>2008-01-11 14:14:33 +0100
commit81255b93d09d5963eeb40dba272838650c939994 (patch)
treeb977ac8538f1933f5ad7d7ff2a7229951108adfc /cpp/src/IceGrid/AdapterCache.cpp
parentAllow third party software locations to be set from environment (diff)
downloadice-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.cpp24
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
{