diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-06-30 13:35:14 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-06-30 13:35:14 +0000 |
commit | 44e9ba02f6402587d1757708c78a007a143fc204 (patch) | |
tree | f0e03f52ce60485937c13af977f68107bcd5f82a /cpp/src/IceGrid/Database.cpp | |
parent | Merged fix from branch (throughput performance issue on Win32) (diff) | |
download | ice-44e9ba02f6402587d1757708c78a007a143fc204.tar.bz2 ice-44e9ba02f6402587d1757708c78a007a143fc204.tar.xz ice-44e9ba02f6402587d1757708c78a007a143fc204.zip |
Changed to the observer interfaces.
Diffstat (limited to 'cpp/src/IceGrid/Database.cpp')
-rw-r--r-- | cpp/src/IceGrid/Database.cpp | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/cpp/src/IceGrid/Database.cpp b/cpp/src/IceGrid/Database.cpp index 39f4a200bde..75b9a7eab14 100644 --- a/cpp/src/IceGrid/Database.cpp +++ b/cpp/src/IceGrid/Database.cpp @@ -221,31 +221,26 @@ Database::~Database() } void -Database::setRegistryObserver(const RegistryObserverPrx& observer) +Database::setObservers(const RegistryObserverPrx& registryObserver, const NodeObserverPrx& nodeObserver) { int serial; ApplicationDescriptorSeq applications; - Ice::StringSeq nodes; { Lock sync(*this); - _registryObserver = observer; + _registryObserver = registryObserver; + _nodeObserver = nodeObserver; serial = _serial; for(StringApplicationDescriptorDict::const_iterator p = _descriptors.begin(); p != _descriptors.end(); ++p) { applications.push_back(p->second); } - - for(map<string, NodeSessionIPtr>::const_iterator p = _nodes.begin(); p != _nodes.end(); ++p) - { - nodes.push_back(p->first); - } } // // Notify the observers. // - _registryObserver->init(serial, applications, nodes); + _registryObserver->init(serial, applications); } void @@ -715,15 +710,26 @@ Database::getNode(const string& name) const void Database::removeNode(const string& name) { - Lock sync(*this); - if(_nodes.erase(name) > 0) { - if(_traceLevels->node > 0) + Lock sync(*this); + if(_nodes.erase(name) > 0) { - Ice::Trace out(_traceLevels->logger, _traceLevels->nodeCat); - out << "removed node `" << name << "'"; + if(_traceLevels->node > 0) + { + Ice::Trace out(_traceLevels->logger, _traceLevels->nodeCat); + out << "removed node `" << name << "'"; + } } } + + try + { + _nodeObserver->nodeDown(name); + } + catch(const Ice::LocalException&) + { + // TODO: Log a warning? + } } Ice::StringSeq |