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.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp
index 46867a30c3e..084c01b2004 100644
--- a/cpp/src/IceGrid/Database.cpp
+++ b/cpp/src/IceGrid/Database.cpp
@@ -119,6 +119,7 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
const IceStorm::TopicManagerPrx& topicManager,
const string& instanceName,
const TraceLevelsPtr& traceLevels,
+ const RegistryInfo& info,
bool master) :
_communicator(registryAdapter->getCommunicator()),
_internalAdapter(registryAdapter),
@@ -164,11 +165,12 @@ Database::Database(const Ice::ObjectAdapterPtr& registryAdapter,
_nodeObserverTopic = new NodeObserverTopic(_topicManager, _internalAdapter);
_registryObserverTopic = new RegistryObserverTopic(_topicManager);
-
_applicationObserverTopic = new ApplicationObserverTopic(_topicManager, _applications);
_adapterObserverTopic = new AdapterObserverTopic(_topicManager, _adapters);
_objectObserverTopic = new ObjectObserverTopic(_topicManager, _objects);
+ _registryObserverTopic->registryUp(info);
+
//
// Register a default servant to manage manually registered object adapters.
//
@@ -719,6 +721,8 @@ Database::addReplica(const string& name, const ReplicaSessionIPtr& session)
{
_replicaCache.add(name, session);
+ _registryObserverTopic->registryUp(session->getInfo());
+
_applicationObserverTopic->subscribe(session->getObserver(), name);
_adapterObserverTopic->subscribe(session->getObserver(), name);
_objectObserverTopic->subscribe(session->getObserver(), name);
@@ -770,6 +774,8 @@ Database::removeReplica(const string& name, const ReplicaSessionIPtr& session)
_adapterObserverTopic->unsubscribe(session->getObserver(), name);
_objectObserverTopic->unsubscribe(session->getObserver(), name);
+ _registryObserverTopic->registryDown(name);
+
_replicaCache.remove(name);
}