diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/IceGrid/AdminSessionI.cpp | 30 | ||||
-rw-r--r-- | cpp/src/IceGrid/RegistryI.cpp | 18 | ||||
-rw-r--r-- | cpp/src/IceGrid/SessionI.cpp | 11 | ||||
-rw-r--r-- | cpp/src/IceGrid/SessionServantLocatorI.cpp | 5 | ||||
-rw-r--r-- | cpp/src/IceGrid/SessionServantLocatorI.h | 3 |
5 files changed, 48 insertions, 19 deletions
diff --git a/cpp/src/IceGrid/AdminSessionI.cpp b/cpp/src/IceGrid/AdminSessionI.cpp index 310963caf3d..e567c545e9c 100644 --- a/cpp/src/IceGrid/AdminSessionI.cpp +++ b/cpp/src/IceGrid/AdminSessionI.cpp @@ -8,6 +8,7 @@ // ********************************************************************** #include <Ice/Ice.h> +#include <IceUtil/UUID.h> #include <IceGrid/RegistryI.h> #include <IceGrid/AdminSessionI.h> #include <IceGrid/AdminI.h> @@ -204,12 +205,20 @@ AdminSessionManagerI::AdminSessionManagerI(const DatabasePtr& database, } Glacier2::SessionPrx -AdminSessionManagerI::create(const string& id, const Glacier2::SessionControlPrx&, const Ice::Current& current) +AdminSessionManagerI::create(const string& userId, const Glacier2::SessionControlPrx&, const Ice::Current& current) { - AdminSessionIPtr session = create(id); - AdminPrx admin = AdminPrx::uncheckedCast(current.adapter->addWithUUID(new AdminI(_database, _registry, session))); + // + // TODO: XXX: Modify filtering? + // + + AdminSessionIPtr session = create(userId); + Ice::Identity id; + id.name = IceUtil::generateUUID(); + id.category = current.id.category; + AdminPrx admin = AdminPrx::uncheckedCast(current.adapter->add(new AdminI(_database, _registry, session), id)); session->setAdmin(admin); - return Glacier2::SessionPrx::uncheckedCast(current.adapter->addWithUUID(session)); + id.name = IceUtil::generateUUID(); + return Glacier2::SessionPrx::uncheckedCast(current.adapter->add(session, id)); } AdminSessionIPtr @@ -253,9 +262,18 @@ AdminSSLSessionManagerI::create(const Glacier2::SSLInfo& info, } } + + // + // TODO: XXX: Modify filtering? + // + AdminSessionIPtr session; session = new AdminSessionI(userDN, _database, _timeout, _registryObserverTopic, _nodeObserverTopic); - AdminPrx admin = AdminPrx::uncheckedCast(current.adapter->addWithUUID(new AdminI(_database, _registry, session))); + Ice::Identity id; + id.name = IceUtil::generateUUID(); + id.category = current.id.category; + AdminPrx admin = AdminPrx::uncheckedCast(current.adapter->add(new AdminI(_database, _registry, session), id)); session->setAdmin(admin); - return Glacier2::SessionPrx::uncheckedCast(current.adapter->addWithUUID(session)); + id.name = IceUtil::generateUUID(); + return Glacier2::SessionPrx::uncheckedCast(current.adapter->add(session, id)); } diff --git a/cpp/src/IceGrid/RegistryI.cpp b/cpp/src/IceGrid/RegistryI.cpp index dbd8fa6e5dc..ac01df8ef3c 100644 --- a/cpp/src/IceGrid/RegistryI.cpp +++ b/cpp/src/IceGrid/RegistryI.cpp @@ -259,13 +259,19 @@ RegistryI::start(bool nowarn) registryAdapter->activate(); // + // Get the instance name + // + const string instanceNameProperty = "IceGrid.InstanceName"; + string instanceName = properties->getPropertyWithDefault(instanceNameProperty, "IceGrid"); + + + // // Add a default servant locator to the client object adapter. The // default servant ensure that request on session objects are from // the same connection as the connection that created the session. // - _sessionServantLocator = new SessionServantLocatorI(clientAdapter); - clientAdapter->addServantLocator(_sessionServantLocator, ""); - + _sessionServantLocator = new SessionServantLocatorI(clientAdapter, instanceName); + clientAdapter->addServantLocator(_sessionServantLocator, ""); // // Start the reaper threads. @@ -296,12 +302,6 @@ RegistryI::start(bool nowarn) _waitQueue->start(); // - // Get the instance name - // - const string instanceNameProperty = "IceGrid.InstanceName"; - string instanceName = properties->getPropertyWithDefault(instanceNameProperty, "IceGrid"); - - // // Create the internal registries (node, server, adapter, object). // const string envName = "Registry"; diff --git a/cpp/src/IceGrid/SessionI.cpp b/cpp/src/IceGrid/SessionI.cpp index b636a27b13e..2f6ced3a1b1 100644 --- a/cpp/src/IceGrid/SessionI.cpp +++ b/cpp/src/IceGrid/SessionI.cpp @@ -8,6 +8,7 @@ // ********************************************************************** #include <Ice/Ice.h> +#include <IceUtil/UUID.h> #include <IceGrid/SessionI.h> #include <IceGrid/QueryI.h> #include <IceGrid/LocatorI.h> @@ -299,7 +300,10 @@ ClientSessionManagerI::ClientSessionManagerI(const DatabasePtr& database, int ti Glacier2::SessionPrx ClientSessionManagerI::create(const string& user, const Glacier2::SessionControlPrx& ctl, const Ice::Current& current) { - Glacier2::SessionPrx s = Glacier2::SessionPrx::uncheckedCast(current.adapter->addWithUUID(create(user, ctl))); + Ice::Identity id; + id.name = IceUtil::generateUUID(); + id.category = current.id.category; + Glacier2::SessionPrx s = Glacier2::SessionPrx::uncheckedCast(current.adapter->add(create(user, ctl), id)); if(ctl) { try @@ -362,7 +366,10 @@ ClientSSLSessionManagerI::create(const Glacier2::SSLInfo& info, const Glacier2:: } SessionIPtr session = new SessionI(userDN, _database, _timeout, _waitQueue, ctl); - Glacier2::SessionPrx s = Glacier2::SessionPrx::uncheckedCast(current.adapter->addWithUUID(session)); + Ice::Identity id; + id.name = IceUtil::generateUUID(); + id.category = current.id.category; + Glacier2::SessionPrx s = Glacier2::SessionPrx::uncheckedCast(current.adapter->add(session, id)); if(ctl) { try diff --git a/cpp/src/IceGrid/SessionServantLocatorI.cpp b/cpp/src/IceGrid/SessionServantLocatorI.cpp index 725e866b130..b35941d7cda 100644 --- a/cpp/src/IceGrid/SessionServantLocatorI.cpp +++ b/cpp/src/IceGrid/SessionServantLocatorI.cpp @@ -15,7 +15,9 @@ using namespace std; using namespace IceGrid; -SessionServantLocatorI::SessionServantLocatorI(const Ice::ObjectAdapterPtr& adapter) : _adapter(adapter) +SessionServantLocatorI::SessionServantLocatorI(const Ice::ObjectAdapterPtr& adapter, const string& instanceName) : + _adapter(adapter), + _instanceName(instanceName) { } @@ -47,6 +49,7 @@ SessionServantLocatorI::add(const Ice::ObjectPtr& servant, const Ice::Connection Lock sync(*this); Ice::Identity id; id.name = IceUtil::generateUUID(); + id.category = _instanceName; if(!_servants.insert(make_pair(id, SessionServant(servant, con))).second) { throw Ice::AlreadyRegisteredException(__FILE__, __LINE__, "servant", id.name); diff --git a/cpp/src/IceGrid/SessionServantLocatorI.h b/cpp/src/IceGrid/SessionServantLocatorI.h index 8f7da5ab972..784f50e8ff2 100644 --- a/cpp/src/IceGrid/SessionServantLocatorI.h +++ b/cpp/src/IceGrid/SessionServantLocatorI.h @@ -20,7 +20,7 @@ class SessionServantLocatorI : public Ice::ServantLocator, public IceUtil::Mutex { public: - SessionServantLocatorI(const Ice::ObjectAdapterPtr&); + SessionServantLocatorI(const Ice::ObjectAdapterPtr&, const std::string&); Ice::ObjectPtr locate(const Ice::Current&, Ice::LocalObjectPtr&); void finished(const Ice::Current&, const Ice::ObjectPtr&, const Ice::LocalObjectPtr&); @@ -40,6 +40,7 @@ private: }; const Ice::ObjectAdapterPtr _adapter; + const std::string _instanceName; std::map<Ice::Identity, SessionServant> _servants; }; typedef IceUtil::Handle<SessionServantLocatorI> SessionServantLocatorIPtr; |