summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdapterCache.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-09-13 08:20:38 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-09-13 08:20:38 +0000
commit7f24d81b685383e7cc09e32ad89c830d86372ca0 (patch)
tree8ccefbe74117f62bd42dd8794cc15e3f9674cb36 /cpp/src/IceGrid/AdapterCache.cpp
parentRemoved bogus abort(); // XXX (diff)
downloadice-7f24d81b685383e7cc09e32ad89c830d86372ca0.tar.bz2
ice-7f24d81b685383e7cc09e32ad89c830d86372ca0.tar.xz
ice-7f24d81b685383e7cc09e32ad89c830d86372ca0.zip
Added support for load factor
Added warning for unknown XML attributes
Diffstat (limited to 'cpp/src/IceGrid/AdapterCache.cpp')
-rw-r--r--cpp/src/IceGrid/AdapterCache.cpp30
1 files changed, 27 insertions, 3 deletions
diff --git a/cpp/src/IceGrid/AdapterCache.cpp b/cpp/src/IceGrid/AdapterCache.cpp
index 854b2815417..944bc27a7ab 100644
--- a/cpp/src/IceGrid/AdapterCache.cpp
+++ b/cpp/src/IceGrid/AdapterCache.cpp
@@ -20,12 +20,14 @@ namespace IceGrid
struct ServerLoadCI : binary_function<ServerEntryPtr&, ServerEntryPtr&, bool>
{
+ ServerLoadCI(LoadSample loadSample) : _loadSample(loadSample) { }
+
bool operator()(const ServerEntryPtr& lhs, const ServerEntryPtr& rhs)
{
float lhsl = 1.0f;
try
{
- lhsl = lhs->getNode()->getLoadInfo().load;
+ lhsl = lhs->getLoad(_loadSample);
}
catch(const ServerNotExistException&)
{
@@ -37,7 +39,7 @@ struct ServerLoadCI : binary_function<ServerEntryPtr&, ServerEntryPtr&, bool>
float rhsl = 1.0f;
try
{
- rhsl = rhs->getNode()->getLoadInfo().load;
+ rhsl = rhs->getLoad(_loadSample);
}
catch(const ServerNotExistException&)
{
@@ -47,6 +49,8 @@ struct ServerLoadCI : binary_function<ServerEntryPtr&, ServerEntryPtr&, bool>
}
return lhsl < rhsl;
}
+
+ LoadSample _loadSample;
};
}
@@ -95,6 +99,26 @@ AdapterEntry::enableReplication(const LoadBalancingPolicyPtr& policy)
{
_loadBalancingNReplicas = _servers.size();
}
+ AdaptiveLoadBalancingPolicyPtr alb = AdaptiveLoadBalancingPolicyPtr::dynamicCast(_loadBalancing);
+ if(alb)
+ {
+ if(alb->loadSample == "1")
+ {
+ _loadSample = LoadSample1;
+ }
+ else if(alb->loadSample == "5")
+ {
+ _loadSample = LoadSample5;
+ }
+ else if(alb->loadSample == "15")
+ {
+ _loadSample = LoadSample15;
+ }
+ else
+ {
+ _loadSample = LoadSample1;
+ }
+ }
}
}
@@ -192,7 +216,7 @@ AdapterEntry::getProxies(int& nReplicas)
// the sort() will call and lock each server entry.
//
random_shuffle(servers.begin(), servers.end());
- sort(servers.begin(), servers.end(), ServerLoadCI());
+ sort(servers.begin(), servers.end(), ServerLoadCI(_loadSample));
}
vector<pair<string, AdapterPrx> > adapters;