diff options
author | Benoit Foucher <benoit@zeroc.com> | 2006-03-20 17:15:41 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2006-03-20 17:15:41 +0000 |
commit | 1fcd966e469e43926004ed3fa74f74703c49f013 (patch) | |
tree | 640b77b249a7f2289dadeeb7fc2c47785ead0055 /cpp/src/IceGrid/ServerCache.cpp | |
parent | Added ProxyType and PointerType typedefs (diff) | |
download | ice-1fcd966e469e43926004ed3fa74f74703c49f013.tar.bz2 ice-1fcd966e469e43926004ed3fa74f74703c49f013.tar.xz ice-1fcd966e469e43926004ed3fa74f74703c49f013.zip |
Fixed bug 908
Diffstat (limited to 'cpp/src/IceGrid/ServerCache.cpp')
-rw-r--r-- | cpp/src/IceGrid/ServerCache.cpp | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp index 6a1c636770b..7a03465928e 100644 --- a/cpp/src/IceGrid/ServerCache.cpp +++ b/cpp/src/IceGrid/ServerCache.cpp @@ -431,15 +431,28 @@ ServerEntry::getApplication() const float ServerEntry::getLoad(LoadSample sample) const { - Lock sync(*this); - if(!_loaded.get() && !_load.get()) + string application; + string node; { - throw ServerNotExistException(); + Lock sync(*this); + if(_loaded.get()) + { + application = _loaded->application; + node = _loaded->node; + } + else if(_load.get()) + { + application = _load->application; + node = _load->node; + } + else + { + throw ServerNotExistException(); + } } - ServerInfo& info = _proxy ? *_loaded.get() : *_load.get(); float factor; - LoadInfo load = _cache.getNodeCache().get(info.node)->getLoadInfoAndLoadFactor(info.application, factor); + LoadInfo load = _cache.getNodeCache().get(node)->getLoadInfoAndLoadFactor(application, factor); switch(sample) { case LoadSample1: |