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/ServerCache.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/ServerCache.cpp')
-rw-r--r-- | cpp/src/IceGrid/ServerCache.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp index 23d20d2af76..0703e26df65 100644 --- a/cpp/src/IceGrid/ServerCache.cpp +++ b/cpp/src/IceGrid/ServerCache.cpp @@ -327,6 +327,35 @@ ServerEntry::getNode() const return _proxy ? _cache.getNodeCache().get(_loaded->node) : _cache.getNodeCache().get(_load->node); } +float +ServerEntry::getLoad(LoadSample sample) const +{ + Lock sync(*this); + if(!_loaded.get() && !_load.get()) + { + throw ServerNotExistException(); + } + + ServerInfo& info = _proxy ? *_loaded.get() : *_load.get(); + float factor; + LoadInfo load = _cache.getNodeCache().get(info.node)->getLoadInfoAndLoadFactor(info.application, factor); + if(factor < 0.0f) + { + factor = 1.0f / load.nProcessors; + } + switch(sample) + { + case LoadSample1: + return load.load1 * factor; + case LoadSample5: + return load.load5 * factor; + case LoadSample15: + return load.load15 * factor; + default: + assert(false); + } +} + ServerPrx ServerEntry::syncImpl(map<string, AdapterPrx>& adpts, int& activationTimeout, int& deactivationTimeout, string& node) { |