diff options
Diffstat (limited to 'cpp/src/IceGrid/NodeSessionI.cpp')
-rw-r--r-- | cpp/src/IceGrid/NodeSessionI.cpp | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/cpp/src/IceGrid/NodeSessionI.cpp b/cpp/src/IceGrid/NodeSessionI.cpp index b3a41d21488..838158e8719 100644 --- a/cpp/src/IceGrid/NodeSessionI.cpp +++ b/cpp/src/IceGrid/NodeSessionI.cpp @@ -14,8 +14,10 @@ using namespace std; using namespace IceGrid; -NodeSessionI::NodeSessionI(const DatabasePtr& database, const string& name, const NodePrx& node) : +NodeSessionI::NodeSessionI(const DatabasePtr& database, const RegistryObserverPrx& observer, const string& name, + const NodePrx& node) : _database(database), + _observer(observer), _name(name), _node(node), _startTime(IceUtil::Time::now()), @@ -27,9 +29,15 @@ NodeSessionI::NodeSessionI(const DatabasePtr& database, const string& name, cons { _database->addNode(name, this); - // - // TODO: Notify observers, node's up. - // + try + { + _observer->nodeUp(_name); + } + catch(const Ice::LocalException& ex) + { + // TODO: Log a warning? + cerr << ex << endl; + } } catch(...) { @@ -70,10 +78,15 @@ NodeSessionI::destroy(const Ice::Current& current) _database->removeNode(_name); - // - // TODO: Notify observers, node's down. - // - + try + { + _observer->nodeDown(_name); + } + catch(const Ice::LocalException&) + { + // TODO: Log a warning? + } + try { current.adapter->remove(current.id); |