def remove_subscriber(self, subscriber: AbstractEventSubscriber): """ Removes an event subscriber. :param subscriber: The subscriber :return: """ for event_name, params in subscriber.get_subscribed_events().items(): if isinstance(params, list) and isinstance(params[0], list): for listener in params: self.remove_listener(event_name, getattr(subscriber, listener[0])) else: parameters = params if isinstance(params, str) else params[0] self.remove_listener(event_name, getattr(subscriber, parameters))
def add_subscriber(self, subscriber: AbstractEventSubscriber): """ Adds an event subscriber. The subscriber is asked for all the events he is interested in and added as a listener for these events. :param subscriber: The subscriber """ for event_name, params in subscriber.get_subscribed_events().items(): if isinstance(params, str): self.add_listener(event_name, getattr(subscriber, params)) elif isinstance(params, list) and len(params) <= 2 and isinstance(params[0], str): priority = params[1] if len(params) > 1 else 0 self.add_listener(event_name, getattr(subscriber, params[0]), priority) else: for listener in params: priority = listener[1] if len(listener) > 1 else 0 self.add_listener(event_name, getattr(subscriber, listener[0]), priority)