diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-09-13 08:20:38 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-09-13 08:20:38 +0000 |
commit | 7f24d81b685383e7cc09e32ad89c830d86372ca0 (patch) | |
tree | 8ccefbe74117f62bd42dd8794cc15e3f9674cb36 /cpp/src/IceGrid/AdapterCache.cpp | |
parent | Removed bogus abort(); // XXX (diff) | |
download | ice-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.cpp | 30 |
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; |