summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/Database.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceGrid/Database.cpp')
-rw-r--r--cpp/src/IceGrid/Database.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index 74d6e8be9d7..6c0d2f91388 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -938,6 +938,12 @@ Database::checkObjectForAddition(const Ice::Identity& objectId)
void
Database::load(const ApplicationHelper& app, ServerEntrySeq& entries)
{
+ const NodeDescriptorDict& nodes = app.getDescriptor().nodes;
+ for(NodeDescriptorDict::const_iterator n = nodes.begin(); n != nodes.end(); ++n)
+ {
+ _nodeCache.get(n->first, true)->addDescriptor(app.getDescriptor().name, n->second);
+ }
+
const ReplicatedAdapterDescriptorSeq& adpts = app.getDescriptor().replicatedAdapters;
for(ReplicatedAdapterDescriptorSeq::const_iterator r = adpts.begin(); r != adpts.end(); ++r)
{
@@ -959,6 +965,12 @@ Database::load(const ApplicationHelper& app, ServerEntrySeq& entries)
void
Database::unload(const ApplicationHelper& app, ServerEntrySeq& entries)
{
+ const NodeDescriptorDict& nodes = app.getDescriptor().nodes;
+ for(NodeDescriptorDict::const_iterator n = nodes.begin(); n != nodes.end(); ++n)
+ {
+ _nodeCache.get(n->first)->removeDescriptor(app.getDescriptor().name);
+ }
+
const ReplicatedAdapterDescriptorSeq& adpts = app.getDescriptor().replicatedAdapters;
for(ReplicatedAdapterDescriptorSeq::const_iterator r = adpts.begin(); r != adpts.end(); ++r)
{
@@ -979,6 +991,18 @@ Database::unload(const ApplicationHelper& app, ServerEntrySeq& entries)
void
Database::reload(const ApplicationHelper& oldApp, const ApplicationHelper& newApp, ServerEntrySeq& entries)
{
+ const NodeDescriptorDict& oldNodes = oldApp.getDescriptor().nodes;
+ NodeDescriptorDict::const_iterator n;
+ for(n = oldNodes.begin(); n != oldNodes.end(); ++n)
+ {
+ _nodeCache.get(n->first)->removeDescriptor(oldApp.getDescriptor().name);
+ }
+ const NodeDescriptorDict& newNodes = newApp.getDescriptor().nodes;
+ for(n = newNodes.begin(); n != newNodes.end(); ++n)
+ {
+ _nodeCache.get(n->first, true)->addDescriptor(newApp.getDescriptor().name, n->second);
+ }
+
//
// Unload/load replicated adapters.
//