Source code for autobahn.wamp.role

###############################################################################
##
##  Copyright (C) 2014 Tavendo GmbH
##
##  Licensed under the Apache License, Version 2.0 (the "License");
##  you may not use this file except in compliance with the License.
##  You may obtain a copy of the License at
##
##      http://www.apache.org/licenses/LICENSE-2.0
##
##  Unless required by applicable law or agreed to in writing, software
##  distributed under the License is distributed on an "AS IS" BASIS,
##  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
##  See the License for the specific language governing permissions and
##  limitations under the License.
##
###############################################################################

from __future__ import absolute_import

__all__ = ['RoleFeatures',
           'RoleBrokerFeatures',
           'RoleSubscriberFeatures',
           'RolePublisherFeatures',
           'RoleDealerFeatures',
           'RoleCallerFeatures',
           'RoleCalleeFeatures',
           'ROLE_NAME_TO_CLASS']


import json
from autobahn import util
from autobahn.wamp.exception import ProtocolError


[docs]class RoleFeatures(util.EqualityMixin):
ROLE = None def __str__(self): return json.dumps(self.__dict__) def _check_all_bool(self): ## check feature attributes for k in self.__dict__: if not k.startswith('_') and k != 'ROLE': if getattr(self, k) is not None and type(getattr(self, k)) != bool: raise ProtocolError("invalid type {0} for feature '{1}' for role '{2}'".format(getattr(self, k), k, self.ROLE)) class RoleCommonPubSubFeatures(RoleFeatures): def __init__(self, publisher_identification = None, partitioned_pubsub = None): self.publisher_identification = publisher_identification self.partitioned_pubsub = partitioned_pubsub
[docs]class RoleBrokerFeatures(RoleCommonPubSubFeatures):
ROLE = u'broker' def __init__(self, subscriber_blackwhite_listing = None, publisher_exclusion = None, publication_trustlevels = None, pattern_based_subscription = None, subscriber_metaevents = None, subscriber_list = None, event_history = None, **kwargs): self.subscriber_blackwhite_listing = subscriber_blackwhite_listing self.publisher_exclusion = publisher_exclusion self.publication_trustlevels = publication_trustlevels self.pattern_based_subscription = pattern_based_subscription self.subscriber_metaevents = subscriber_metaevents self.subscriber_list = subscriber_list self.event_history = event_history RoleCommonPubSubFeatures.__init__(self, **kwargs) self._check_all_bool()
[docs]class RoleSubscriberFeatures(RoleCommonPubSubFeatures):
ROLE = u'subscriber' def __init__(self, publication_trustlevels = None, pattern_based_subscription = None, subscriber_metaevents = None, subscriber_list = None, event_history = None, **kwargs): self.publication_trustlevels = publication_trustlevels self.pattern_based_subscription = pattern_based_subscription self.subscriber_metaevents = subscriber_metaevents self.subscriber_list = subscriber_list self.event_history = event_history RoleCommonPubSubFeatures.__init__(self, **kwargs) self._check_all_bool()
[docs]class RolePublisherFeatures(RoleCommonPubSubFeatures):
ROLE = u'publisher' def __init__(self, subscriber_blackwhite_listing = None, publisher_exclusion = None, **kwargs): self.subscriber_blackwhite_listing = subscriber_blackwhite_listing self.publisher_exclusion = publisher_exclusion RoleCommonPubSubFeatures.__init__(self, **kwargs) self._check_all_bool() class RoleCommonRpcFeatures(RoleFeatures): def __init__(self, caller_identification = None, partitioned_rpc = None, call_timeout = None, call_canceling = None, progressive_call_results = None): self.caller_identification = caller_identification self.partitioned_rpc = partitioned_rpc self.call_timeout = call_timeout self.call_canceling = call_canceling self.progressive_call_results = progressive_call_results
[docs]class RoleDealerFeatures(RoleCommonRpcFeatures):
ROLE = u'dealer' def __init__(self, callee_blackwhite_listing = None, caller_exclusion = None, call_trustlevels = None, pattern_based_registration = None, **kwargs): self.callee_blackwhite_listing = callee_blackwhite_listing self.caller_exclusion = caller_exclusion self.call_trustlevels = call_trustlevels self.pattern_based_registration = pattern_based_registration RoleCommonRpcFeatures.__init__(self, **kwargs) self._check_all_bool()
[docs]class RoleCallerFeatures(RoleCommonRpcFeatures):
ROLE = u'caller' def __init__(self, callee_blackwhite_listing = None, caller_exclusion = None, **kwargs): self.callee_blackwhite_listing = callee_blackwhite_listing self.caller_exclusion = caller_exclusion RoleCommonRpcFeatures.__init__(self, **kwargs) self._check_all_bool()
[docs]class RoleCalleeFeatures(RoleCommonRpcFeatures):
ROLE = u'callee' def __init__(self, call_trustlevels = None, pattern_based_registration = None, **kwargs): self.call_trustlevels = call_trustlevels self.pattern_based_registration = pattern_based_registration RoleCommonRpcFeatures.__init__(self, **kwargs) self._check_all_bool() ROLE_NAME_TO_CLASS = { u'broker': RoleBrokerFeatures, u'subscriber': RoleSubscriberFeatures, u'publisher': RolePublisherFeatures, u'dealer': RoleDealerFeatures, u'caller': RoleCallerFeatures, u'callee': RoleCalleeFeatures, }
Reactive Manifesto: We are reactive banner