3 server side implementation of callback event 6 from collections
import OrderedDict
12 The possible types of a Callback type. 19 ItemSubscriptionCreated = 1
20 ItemSubscriptionModified = 2
21 ItemSubscriptionDeleted= 3
37 def __init__(self, request_params, response_params):
44 raise NotImplementedError()
54 elif not isinstance(event, Callback):
55 raise ValueError(
'Unexpected event type given')
56 event.setName(eventName)
59 for listener
in self.
_listeners[eventName].values():
66 self.
_listeners[eventName][priority] = listener
67 self.
_listeners[eventName] = OrderedDict(sorted(self.
_listeners[eventName].items(), key=
lambda item: item[0]))
75 for p, l
in self.
_listeners[eventName].items():
81 if not isinstance(subscriber, CallbackSubscriberInterface):
82 raise ValueError(
'Unexpected subscriber type given')
83 for eventName, params
in subscriber.getSubscribedEvents().items():
84 if isinstance(params, str):
85 self.
addListener(eventName, getattr(subscriber, params))
86 elif isinstance(params, list):
88 raise ValueError(
'Invalid params "{0!r}" for event "{1!s}"'.format(params, eventName))
89 if len(params) <= 2
and isinstance(params[0], str):
90 priority = params[1]
if len(params) > 1
else 0
91 self.
addListener(eventName, getattr(subscriber, params[0]), priority)
93 for listener
in params:
94 priority = listener[1]
if len(listener) > 1
else 0
95 self.
addListener(eventName, getattr(subscriber, listener[0]), priority)
97 raise ValueError(
'Invalid params for event "{0!s}"'.format(eventName))
def __init__(self, request_params, response_params)
def removeListener(self, eventName, listener=None)
def getSubscribedEvents(self)
def addSubscriber(self, subscriber)
def addListener(self, eventName, listener, priority=0)
def dispatch(self, eventName, event=None)