summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-09-19 08:28:15 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-09-19 08:28:15 +0000
commit0b65311fc96640969f1404fa550615ed855e8b04 (patch)
tree35c36b70718238137e4b80dbd08fbf0345ca5c8c /cpp/src
parentFixed IceGrid bugs 1381, 1382, 1369, 1342, 1341, 1334 (diff)
downloadice-0b65311fc96640969f1404fa550615ed855e8b04.tar.bz2
ice-0b65311fc96640969f1404fa550615ed855e8b04.tar.xz
ice-0b65311fc96640969f1404fa550615ed855e8b04.zip
Fixed registry observer.
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceGrid/Database.cpp8
-rw-r--r--cpp/src/IceGrid/Database.h2
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp3
3 files changed, 10 insertions, 3 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);
}
diff --git a/cpp/src/IceGrid/Database.h b/cpp/src/IceGrid/Database.h
index a3402da3f99..9f93d00cdc8 100644
--- a/cpp/src/IceGrid/Database.h
+++ b/cpp/src/IceGrid/Database.h
@@ -51,7 +51,7 @@ class Database : public IceUtil::Shared, public IceUtil::Monitor<IceUtil::Mutex>
public:
Database(const Ice::ObjectAdapterPtr&, const IceStorm::TopicManagerPrx&, const std::string&, const TraceLevelsPtr&,
- bool);
+ const RegistryInfo&, bool);
virtual ~Database();
void destroy();
diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp
index a4a944b66a3..f1417d1a176 100644
--- a/cpp/src/IceGrid/RegistryI.cpp
+++ b/cpp/src/IceGrid/RegistryI.cpp
@@ -253,8 +253,9 @@ RegistryI::start(bool nowarn)
"IceGrid.Registry",
registryTopicManagerId,
"Registry");
+ const IceStorm::TopicManagerPrx topicManager = _iceStorm->getTopicManager();
- _database = new Database(registryAdapter, _iceStorm->getTopicManager(), _instanceName, _traceLevels, _master);
+ _database = new Database(registryAdapter, topicManager, _instanceName, _traceLevels, getInfo(), _master);
_wellKnownObjects = new WellKnownObjectsManager(_database);
InternalRegistryPrx internalRegistry;