summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/ServerCache.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-03-20 17:15:41 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-03-20 17:15:41 +0000
commit1fcd966e469e43926004ed3fa74f74703c49f013 (patch)
tree640b77b249a7f2289dadeeb7fc2c47785ead0055 /cpp/src/IceGrid/ServerCache.cpp
parentAdded ProxyType and PointerType typedefs (diff)
downloadice-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.cpp23
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: