summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceGrid/AdminSessionI.cpp30
-rw-r--r--cpp/src/IceGrid/RegistryI.cpp18
-rw-r--r--cpp/src/IceGrid/SessionI.cpp11
-rw-r--r--cpp/src/IceGrid/SessionServantLocatorI.cpp5
-rw-r--r--cpp/src/IceGrid/SessionServantLocatorI.h3
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;