diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-06-09 14:33:56 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-06-09 14:33:56 +0000 |
commit | dd4155ec2f0c543061e3a08d0938c5f8aff227c7 (patch) | |
tree | 5feac0309fb01f2da479179ddc23d93a407ceae9 /cpp/src/IceGrid/NodeI.cpp | |
parent | adding support classes for CLDC support (diff) | |
download | ice-dd4155ec2f0c543061e3a08d0938c5f8aff227c7.tar.bz2 ice-dd4155ec2f0c543061e3a08d0938c5f8aff227c7.tar.xz ice-dd4155ec2f0c543061e3a08d0938c5f8aff227c7.zip |
Added support for sessions and node/registry observers
Diffstat (limited to 'cpp/src/IceGrid/NodeI.cpp')
-rw-r--r-- | cpp/src/IceGrid/NodeI.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/cpp/src/IceGrid/NodeI.cpp b/cpp/src/IceGrid/NodeI.cpp index 0edab23e130..fefcc49ce9c 100644 --- a/cpp/src/IceGrid/NodeI.cpp +++ b/cpp/src/IceGrid/NodeI.cpp @@ -237,6 +237,7 @@ NodeI::checkConsistency() { _serial = 1; // We can reset the serial number. checkConsistencyNoSync(servers); + initObserver(servers); break; } serial = _serial; @@ -415,3 +416,57 @@ NodeI::canRemoveServerDirectory(const string& name) return true; } +void +NodeI::initObserver(const Ice::StringSeq& servers) +{ + ServerDynamicInfoSeq serverInfos; + AdapterDynamicInfoSeq adapterInfos; + + for(Ice::StringSeq::const_iterator p = servers.begin(); p != servers.end(); ++p) + { + Ice::Identity id; + id.category = "IceGridServer"; + id.name = *p; + if(_adapter->find(id)) + { + ServerPrx proxy = ServerPrx::uncheckedCast(_adapter->createProxy(id)); + try + { + ServerDynamicInfo server; + server.name = *p; + server.pid = proxy->getPid(); + server.state = proxy->getState(); + serverInfos.push_back(server); + + StringAdapterPrxDict adapters = proxy->getAdapters(); + for(StringAdapterPrxDict::const_iterator p = adapters.begin(); p != adapters.end(); ++p) + { + AdapterDynamicInfo adapter; + adapter.id = p->first; + try + { + adapter.proxy = p->second->getDirectProxy(); + } + catch(const AdapterNotActiveException&) + { + } + catch(const Ice::ObjectNotExistException&) + { + } + adapterInfos.push_back(adapter); + } + } + catch(const Ice::ObjectNotExistException&) + { + } + } + } + + try + { + _observer->init(_name, serverInfos, adapterInfos); + } + catch(const Ice::LocalException&) + { + } +} |