summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/ServerCache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/ServerCache.cpp')
-rw-r--r--cpp/src/IceGrid/ServerCache.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/ServerCache.cpp b/cpp/src/IceGrid/ServerCache.cpp
index 0ec5fa310c4..1e90dfa3f2c 100644
--- a/cpp/src/IceGrid/ServerCache.cpp
+++ b/cpp/src/IceGrid/ServerCache.cpp
@@ -142,6 +142,7 @@ ServerCache::getNodeCache() const
void
ServerCache::addCommunicator(const CommunicatorDescriptorPtr& comm, const ServerEntryPtr& entry)
{
+ const string application = entry->getApplication();
for(AdapterDescriptorSeq::const_iterator q = comm->adapters.begin() ; q != comm->adapters.end(); ++q)
{
if(!q->id.empty())
@@ -150,7 +151,8 @@ ServerCache::addCommunicator(const CommunicatorDescriptorPtr& comm, const Server
}
for(ObjectDescriptorSeq::const_iterator r = q->objects.begin(); r != q->objects.end(); ++r)
{
- _objectCache.add(q->id, IceGrid::getProperty(comm->properties, q->name + ".Endpoints"), *r);
+ const string edpts = IceGrid::getProperty(comm->properties, q->name + ".Endpoints");
+ _objectCache.add(application, q->id, edpts, *r);
}
}
}
@@ -341,6 +343,17 @@ ServerEntry::getNode() const
return _proxy ? _cache.getNodeCache().get(_loaded->node) : _cache.getNodeCache().get(_load->node);
}
+string
+ServerEntry::getApplication() const
+{
+ Lock sync(*this);
+ if(!_loaded.get() && !_load.get())
+ {
+ throw ServerNotExistException();
+ }
+ return _proxy ? _loaded->application : _load->application;
+}
+
float
ServerEntry::getLoad(LoadSample sample) const
{