autobahn.wamp.protocol

Classes

ApplicationSession

WAMP application session for applications (networking framework agnostic parts).

ApplicationSessionFactory

WAMP endpoint session factory.

BaseSession

WAMP session base class.

_SessionShim

shim that lets us present pep8 API for user-classes to override,

Functions

Module Contents

class ApplicationSession(config: autobahn.wamp.types.ComponentConfig | None = None)[source]

Bases: BaseSession

WAMP application session for applications (networking framework agnostic parts).

Implements (partially):

_call_reqs[source]
_config: autobahn.wamp.types.ComponentConfig[source]
_errback_outstanding_requests(exc)[source]

Errback any still outstanding requests with exc.

_goodbye_sent: bool = False[source]
_invocations[source]
_payload_codec: autobahn.wamp.interfaces.IPayloadCodec | None = None[source]
_publish_reqs[source]
_register_reqs[source]
_registrations[source]
_subscribe_reqs[source]
_subscriptions[source]
_swallow_error(fail, msg)[source]

This is an internal generic error-handler for errors encountered when calling down to on*() handlers that can reasonably be expected to be overridden in user code.

Note that it cancels the error, so use with care!

Specifically, this should never be added to the errback chain for a Deferred/coroutine that will make it out to user code.

_transport_is_closing: bool = False[source]
_unregister(registration)[source]

Called from autobahn.wamp.protocol.Registration.unregister()

_unregister_reqs[source]
_unsubscribe(subscription)[source]

Called from autobahn.wamp.protocol.Subscription.unsubscribe()

_unsubscribe_reqs[source]
call(procedure: str, *args, **kwargs) Any | autobahn.wamp.types.CallResult[source]

Implements autobahn.wamp.interfaces.ICaller.call()

Note

Regarding type hints for *args and **kwargs, doesn’t work as we can receive any Python types as list items or dict values, and because of what is discussed here https://adamj.eu/tech/2021/05/11/python-type-hints-args-and-kwargs/

property config: autobahn.wamp.types.ComponentConfig[source]
disconnect()[source]

Implements autobahn.wamp.interfaces.ISession.disconnect()

get_payload_codec() autobahn.wamp.interfaces.IPayloadCodec | None[source]

Implements autobahn.wamp.interfaces.ISession.get_payload_codec()

join(realm: str, authmethods: List[str] | None = None, authid: str | None = None, authrole: str | None = None, authextra: Dict[str, Any] | None = None, resumable: bool | None = None, resume_session: int | None = None, resume_token: str | None = None)[source]

Implements autobahn.wamp.interfaces.ISession.join()

leave(reason: str | None = None, message: str | None = None)[source]

Implements autobahn.wamp.interfaces.ISession.leave()

onChallenge(challenge: autobahn.wamp.types.Challenge) str[source]

Implements autobahn.wamp.interfaces.ISession.onChallenge()

onClose(wasClean)[source]

Implements autobahn.wamp.interfaces.ITransportHandler.onClose()

onConnect()[source]

Implements autobahn.wamp.interfaces.ISession.onConnect()

onDisconnect()[source]

Implements autobahn.wamp.interfaces.ISession.onDisconnect()

onJoin(details: autobahn.wamp.types.SessionDetails)[source]

Implements autobahn.wamp.interfaces.ISession.onJoin()

onLeave(details: autobahn.wamp.types.CloseDetails)[source]

Implements autobahn.wamp.interfaces.ISession.onLeave()

onMessage(msg: autobahn.wamp.interfaces.IMessage)[source]

Implements autobahn.wamp.interfaces.ITransportHandler.onMessage()

onOpen(transport: autobahn.wamp.interfaces.ITransport)[source]

Implements autobahn.wamp.interfaces.ITransportHandler.onOpen()

onUserError(fail, msg)[source]

Implements autobahn.wamp.interfaces.ISession.onUserError()

onWelcome(welcome: autobahn.wamp.message.Welcome) str | None[source]

Implements autobahn.wamp.interfaces.ISession.onWelcome()

publish(topic: str, *args, **kwargs) autobahn.wamp.request.Publication | None[source]

Implements autobahn.wamp.interfaces.IPublisher.publish()

register(endpoint: Callable | Any, procedure: str | None = None, options: autobahn.wamp.types.RegisterOptions | None = None, prefix: str | None = None, check_types: bool | None = None) autobahn.wamp.request.Registration | List[autobahn.wamp.request.Registration][source]

Implements autobahn.wamp.interfaces.ICallee.register()

set_payload_codec(payload_codec: autobahn.wamp.interfaces.IPayloadCodec | None)[source]

Implements autobahn.wamp.interfaces.ISession.set_payload_codec()

subscribe(handler: Callable | Any, topic: str | None = None, options: autobahn.wamp.types.SubscribeOptions | None = None, check_types: bool | None = None) autobahn.wamp.request.Subscription | List[autobahn.wamp.request.Subscription][source]

Implements autobahn.wamp.interfaces.ISubscriber.subscribe()

type_check(func)[source]

Does parameter type checking and validation against type hints and appropriately tells the user code and the caller (through router).

class ApplicationSessionFactory(config=None)[source]

Bases: object

WAMP endpoint session factory.

__call__()[source]

Creates a new WAMP application session.

Returns:

– An instance of the WAMP application session class as given by self.session.

config[source]
session[source]

WAMP application session class to be used in this factory.

class BaseSession[source]

Bases: autobahn.util.ObservableMixin

WAMP session base class.

This class implements autobahn.wamp.interfaces.ISession.

_authextra: Dict[str, Any] | None = None[source]
_authid: str | None = None[source]
_authmethod: str | None = None[source]
_authprovider: str | None = None[source]
_authrole: str | None = None[source]
_ecls_to_uri_pat: Dict[ClassVar, List[autobahn.wamp.uri.Pattern]][source]
_exception_from_message(msg)[source]

Create a user (or generic) exception from a WAMP error message.

Parameters:

msg (instance of autobahn.wamp.message.Error) – A WAMP error message.

_message_from_exception(request_type, request, exc, tb=None, enc_algo=None)[source]

Create a WAMP error message from an exception.

Parameters:
  • request_type (int) – The request type this WAMP error message is for.

  • request (int) – The request ID this WAMP error message is for.

  • exc (Instance of Exception or subclass thereof.) – The exception.

  • tb (list or None) – Optional traceback. If present, it’ll be included with the WAMP error message.

_payload_codec: autobahn.wamp.interfaces.IPayloadCodec | None = None[source]
_realm: str | None = None[source]
_request_id_gen[source]
_session_details: autobahn.wamp.types.SessionDetails | None = None[source]
_session_id: int | None = None[source]
_session_roles: Dict[str, autobahn.wamp.role.RoleFeatures][source]
_transport: autobahn.wamp.interfaces.ITransport | None = None[source]
_uri_to_ecls: Dict[str, ClassVar][source]
property authextra: Dict[str, Any] | None[source]
property authid: str | None[source]
property authmethod: str | None[source]
property authprovider: str | None[source]
property authrole: str | None[source]
define(exception: Exception, error: str | None = None)[source]

Implements autobahn.wamp.interfaces.ISession.define()

is_attached() bool[source]

Implements autobahn.wamp.interfaces.ISession.is_attached()

is_connected() bool[source]

Implements autobahn.wamp.interfaces.ISession.is_connected()

log = None[source]
property realm: str | None[source]
property session_details: autobahn.wamp.types.SessionDetails | None[source]

Implements autobahn.wamp.interfaces.ISession.session_details()

property session_id: int | None[source]
traceback_app = False[source]
property transport: autobahn.wamp.interfaces.ITransport | None[source]

Implements autobahn.wamp.interfaces.ITransportHandler.transport()

class _SessionShim(config: autobahn.wamp.types.ComponentConfig | None = None)[source]

Bases: ApplicationSession

shim that lets us present pep8 API for user-classes to override, but also backwards-compatible for existing code using ApplicationSession “directly”.

NOTE: this is not public or intended for use; you should import either autobahn.asyncio.wamp.Session or autobahn.twisted.wamp.Session depending on which async framework yo’re using.

_authenticators = None[source]
_merged_authextra()[source]

internal helper

Returns:

a single ‘authextra’ dict, consisting of all keys from any authenticator’s authextra.

Note that when the authenticator was added, we already checked that any keys it does contain has the same value as any existing authextra.

add_authenticator(authenticator)[source]
onChallenge(challenge)[source]

Implements autobahn.wamp.interfaces.ISession.onChallenge()

onConnect()[source]

Implements autobahn.wamp.interfaces.ISession.onConnect()

onDisconnect()[source]

Implements autobahn.wamp.interfaces.ISession.onDisconnect()

onJoin(details)[source]

Implements autobahn.wamp.interfaces.ISession.onJoin()

onLeave(details)[source]

Implements autobahn.wamp.interfaces.ISession.onLeave()

onWelcome(msg)[source]

Implements autobahn.wamp.interfaces.ISession.onWelcome()

on_connect()[source]
on_disconnect()[source]
on_join(details)[source]
on_leave(details)[source]
is_method_or_function(f)[source]