summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdminSessionI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2007-03-05 10:03:15 +0000
committerBenoit Foucher <benoit@zeroc.com>2007-03-05 10:03:15 +0000
commitbb7bf62284a97e4b3f6c26b0e15b9eb6ca6f3ca7 (patch)
tree8a69d3a3b1c0ece6ed8da457386e402863242f16 /cpp/src/IceGrid/AdminSessionI.cpp
parent*** empty log message *** (diff)
downloadice-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.cpp35
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();