self._transport.send(reply) self._router.detach(self) self._session_id = None self._pending_session_id = None def onError(self, err): """ Overwride for custom error handling. """ if self.debug: print("Catched exception during message processing: {0}".format(err.getTraceback())) # replace with proper logging ITransportHandler.register(RouterSession) class RouterSessionFactory(FutureMixin): """ WAMP router session factory. """ session = RouterSession """ WAMP router session class to be used in this factory. """ def __init__(self, routerFactory): """
d = self._create_future() self._unregister_reqs[request] = (d, registration) msg = message.Unregister(request, registration.id) self._transport.send(msg) return d IPublisher.register(ApplicationSession) ISubscriber.register(ApplicationSession) ICaller.register(ApplicationSession) #ICallee.register(ApplicationSession) ## FIXME: ".register" collides with the ABC "register" method ITransportHandler.register(ApplicationSession) class ApplicationSessionFactory: """ WAMP endpoint session factory. """ session = ApplicationSession """ WAMP application session class to be used in this factory. """ def __init__(self, config = None): """
if details.reason == u"wamp.close.logout": # if cookie was set on transport .. if self._transport._cbtid and self._transport.factory._cookiestore: cs = self._transport.factory._cookiestore # set cookie to "not authenticated" cs.setAuth(self._transport._cbtid, None, None, None, None, None) # kick all session for the same auth cookie for proto in cs.getProtos(self._transport._cbtid): proto.sendClose() ITransportHandler.register(RouterSession) class RouterSessionFactory(object): """ Factory creating the router side of (non-embedded) Crossbar.io WAMP sessions. This is the session factory that will be given to router transports. """ log = make_logger() session = RouterSession """ WAMP router session class to be used in this factory. """ def __init__(self, routerFactory):
self.transport.send(message.Abort(auth_result.reason, message=auth_result.message)) else: # should not arrive here: logic error self.transport.send(message.Abort(ApplicationError.AUTHENTICATION_FAILED, message='internal error: unexpected authenticator return type {}'.format(type(auth_result)))) else: # should not arrive here: logic error self.transport.send(message.Abort(ApplicationError.AUTHENTICATION_FAILED, message='internal error: unexpected pending authentication')) else: # should not arrive here: client misbehaving! self.transport.send(message.Abort(ApplicationError.AUTHENTICATION_FAILED, message='no pending authentication')) ITransportHandler.register(ProxyFrontendSession) class ProxyBackendSession(Session): """ This is a single WAMP session to the real backend service There is one of these for every client connection. (In the future, we could multiplex over a single backend connection -- for now, there's a backend connection per frontend client). XXX serializer translation? XXX before ^ just negotiate with the frontend to have the same serializer as the backend. """