summaryrefslogtreecommitdiff
path: root/cpp/src/IceGrid/AdminSessionI.cpp
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2006-05-22 16:30:01 +0000
committerBenoit Foucher <benoit@zeroc.com>2006-05-22 16:30:01 +0000
commit67b1e7d79f390dd5098aac0a226cc71775f4904d (patch)
tree81da7fc9bff0612eea851618a066c3463420e4ef /cpp/src/IceGrid/AdminSessionI.cpp
parentAdded session servant locator to secure access to session servants. (diff)
downloadice-67b1e7d79f390dd5098aac0a226cc71775f4904d.tar.bz2
ice-67b1e7d79f390dd5098aac0a226cc71775f4904d.tar.xz
ice-67b1e7d79f390dd5098aac0a226cc71775f4904d.zip
Amin object is now also per-session
Diffstat (limited to 'cpp/src/IceGrid/AdminSessionI.cpp')
-rw-r--r--cpp/src/IceGrid/AdminSessionI.cpp20
1 files changed, 14 insertions, 6 deletions
diff --git a/cpp/src/IceGrid/AdminSessionI.cpp b/cpp/src/IceGrid/AdminSessionI.cpp
index 32b9ef5e70f..e755a8e037d 100644
--- a/cpp/src/IceGrid/AdminSessionI.cpp
+++ b/cpp/src/IceGrid/AdminSessionI.cpp
@@ -17,13 +17,14 @@ using namespace std;
using namespace IceGrid;
AdminSessionI::AdminSessionI(const string& id,
- const DatabasePtr& database,
+ const DatabasePtr& db,
int timeout,
const RegistryObserverTopicPtr& registryObserverTopic,
const NodeObserverTopicPtr& nodeObserverTopic) :
- BaseSessionI(id, "admin", database, timeout),
+ BaseSessionI(id, "admin", db, timeout),
_registryObserverTopic(registryObserverTopic),
_nodeObserverTopic(nodeObserverTopic),
+ _admin(AdminPrx::uncheckedCast(db->getCommunicator()->stringToProxy(db->getInstanceName() + "/Admin"))),
_updating(false)
{
}
@@ -35,8 +36,7 @@ AdminSessionI::~AdminSessionI()
AdminPrx
AdminSessionI::getAdmin(const Ice::Current& current) const
{
- return AdminPrx::uncheckedCast(
- current.adapter->getCommunicator()->stringToProxy(_database->getInstanceName() + "/Admin"));
+ return _admin;
}
void
@@ -247,6 +247,13 @@ AdminSessionI::destroy(const Ice::Current& current)
}
}
+void
+AdminSessionI::setServantLocator(const SessionServantLocatorIPtr& servantLocator, const AdminPrx& admin)
+{
+ BaseSessionI::setServantLocator(servantLocator);
+ const_cast<AdminPrx&>(_admin) = admin;
+}
+
AdminSessionManagerI::AdminSessionManagerI(const DatabasePtr& database,
int sessionTimeout,
const RegistryObserverTopicPtr& regTopic,
@@ -302,6 +309,7 @@ AdminSSLSessionManagerI::create(const Glacier2::SSLInfo& info, const Glacier2::S
}
}
- AdminSessionIPtr s = new AdminSessionI(userDN, _database, _timeout, _registryObserverTopic, _nodeObserverTopic);
- return Glacier2::SessionPrx::uncheckedCast(current.adapter->addWithUUID(s));
+ AdminSessionIPtr session;
+ session = new AdminSessionI(userDN, _database, _timeout, _registryObserverTopic, _nodeObserverTopic);
+ return Glacier2::SessionPrx::uncheckedCast(current.adapter->addWithUUID(session));
}