summaryrefslogtreecommitdiff
path: root/cpp/src/Glacier2/SessionRouterI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/Glacier2/SessionRouterI.cpp')
-rw-r--r--cpp/src/Glacier2/SessionRouterI.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/cpp/src/Glacier2/SessionRouterI.cpp b/cpp/src/Glacier2/SessionRouterI.cpp
index 3bdff0d63bf..1407089895c 100644
--- a/cpp/src/Glacier2/SessionRouterI.cpp
+++ b/cpp/src/Glacier2/SessionRouterI.cpp
@@ -8,6 +8,7 @@
// **********************************************************************
#include <Glacier2/PermissionsVerifier.h>
+#include <Glacier2/Session.h>
#include <Glacier2/SessionRouterI.h>
#include <Glacier2/RouterI.h>
@@ -218,14 +219,24 @@ Glacier2::SessionRouterI::createSession(const std::string& userId, const std::st
if(p != _routersByConnection.end())
{
SessionExistsException ex;
- ex.existingSession = 0; // TODO
+ ex.existingSession = p->second->getSession();
throw ex;
}
//
+ // If we have a session manager configured, we create a
+ // client-visible session object.
+ //
+ SessionPrx session;
+ if(_sessionManager)
+ {
+ session = _sessionManager->create(userId);
+ }
+
+ //
// Add a new per-client router.
//
- RouterIPtr router = new RouterI(_clientAdapter, _serverAdapter, current.con, userId);
+ RouterIPtr router = new RouterI(_clientAdapter, _serverAdapter, current.con, userId, session);
_routersByConnectionHint = _routersByConnection.insert(_routersByConnectionHint,
pair<const ConnectionPtr, RouterIPtr>(current.con, router));
if(_serverAdapter)
@@ -243,7 +254,7 @@ Glacier2::SessionRouterI::createSession(const std::string& userId, const std::st
out << router->toString();
}
- return 0;
+ return session;
}
void