diff options
author | Benoit Foucher <benoit@zeroc.com> | 2007-03-05 10:03:15 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2007-03-05 10:03:15 +0000 |
commit | bb7bf62284a97e4b3f6c26b0e15b9eb6ca6f3ca7 (patch) | |
tree | 8a69d3a3b1c0ece6ed8da457386e402863242f16 /cpp/src/IceGrid/AdminSessionI.cpp | |
parent | *** empty log message *** (diff) | |
download | ice-bb7bf62284a97e4b3f6c26b0e15b9eb6ca6f3ca7.tar.bz2 ice-bb7bf62284a97e4b3f6c26b0e15b9eb6ca6f3ca7.tar.xz ice-bb7bf62284a97e4b3f6c26b0e15b9eb6ca6f3ca7.zip |
Fixed bug 1962
Diffstat (limited to 'cpp/src/IceGrid/AdminSessionI.cpp')
-rw-r--r-- | cpp/src/IceGrid/AdminSessionI.cpp | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/cpp/src/IceGrid/AdminSessionI.cpp b/cpp/src/IceGrid/AdminSessionI.cpp index 8422018e210..c8e49df1858 100644 --- a/cpp/src/IceGrid/AdminSessionI.cpp +++ b/cpp/src/IceGrid/AdminSessionI.cpp @@ -76,13 +76,16 @@ AdminSessionI::registerWithServantLocator(const SessionServantLocatorIPtr& serva } Ice::ObjectPrx -AdminSessionI::registerWithObjectAdapter(const Ice::ObjectAdapterPtr& adapter, const RegistryIPtr& registry) +AdminSessionI::registerWithObjectAdapter(const Ice::ObjectAdapterPtr& adapter, + const RegistryIPtr& registry, + const Glacier2::SessionControlPrx& ctl) { Ice::ObjectPrx proxy = BaseSessionI::registerWithObjectAdapter(adapter); Ice::Identity identity; identity.category = _database->getInstanceName(); identity.name = IceUtil::generateUUID(); _admin = AdminPrx::uncheckedCast(adapter->add(new AdminI(_database, registry, this), identity)); + _sessionControl = ctl; return proxy; } @@ -344,6 +347,19 @@ AdminSessionI::addFileIterator(const FileReaderPrx& reader, { assert(_adapter); obj = _adapter->addWithUUID(servant); + + if(_sessionControl) + { + try + { + Ice::IdentitySeq ids; + ids.push_back(obj->ice_getIdentity()); + _sessionControl->identities()->add(ids); + } + catch(const Ice::LocalException&) + { + } + } } _iterators.insert(obj->ice_getIdentity()); return FileIteratorPrx::uncheckedCast(obj); @@ -361,12 +377,25 @@ AdminSessionI::removeFileIterator(const Ice::Identity& id, const Ice::Current& c { try { - assert(_adapter); + assert(_adapter && _sessionControl); _adapter->remove(id); } catch(const Ice::ObjectAdapterDeactivatedException&) { } + + if(_sessionControl) + { + try + { + Ice::IdentitySeq ids; + ids.push_back(id); + _sessionControl->identities()->remove(ids); + } + catch(const Ice::LocalException&) + { + } + } } _iterators.erase(id); } @@ -456,7 +485,7 @@ AdminSessionFactory::createGlacier2Session(const string& sessionId, const Glacie assert(_adapter); AdminSessionIPtr session = createSessionServant(sessionId); - Ice::ObjectPrx proxy = session->registerWithObjectAdapter(_adapter, _registry); + Ice::ObjectPrx proxy = session->registerWithObjectAdapter(_adapter, _registry, ctl); Ice::Identity queryId; queryId.category = _database->getInstanceName(); |