diff options
Diffstat (limited to 'EventManager.py')
| -rw-r--r-- | EventManager.py | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/EventManager.py b/EventManager.py index 8bd974c4..b4045d83 100644 --- a/EventManager.py +++ b/EventManager.py @@ -34,12 +34,21 @@ class MultipleEventHook(object): self._event_hooks = set([]) def _add(self, event_hook): self._event_hooks.add(event_hook) + def hook(self, function, **kwargs): for event_hook in self._event_hooks: event_hook.hook(function, **kwargs) - def call(self, max=None, **kwargs): + + def call_limited(self, maximum, **kwargs): + returns = [] for event_hook in self._event_hooks: - event_hook.call(max, **kwargs) + returns.append(event_hook.call_limited(maximum, **kwargs)) + return returns + def call(self, **kwargs): + returns = [] + for event_hook in self._event_hooks: + returns.append(event_hook.call(**kwargs)) + return returns class EventHook(object): def __init__(self, bot, name=None, parent=None): @@ -71,9 +80,9 @@ class EventHook(object): self._hooks.append(callback) self._hooks.sort(key=lambda x: x.priority) - if replay: + if replay and not self._stored_events == None: for kwargs in self._stored_events: - callback.call(self._make_event(kwargs)) + self._call(kwargs) self._stored_events = None def _unhook(self, hook): @@ -102,8 +111,12 @@ class EventHook(object): if not self._stored_events == None: self._stored_events.append(kwargs) else: - self.call(**kwargs) - def call(self, max=None, **kwargs): + self._call(kwargs) + def call(self, **kwargs): + return self._call(kwargs) + def call_limited(self, maximum, **kwargs): + return self._call(kwargs, maximum=maximum) + def _call(self, kwargs, maximum=None): self.bot.log.debug("calling event: \"%s\" (params: %s)", [self._get_path(), kwargs]) start = time.monotonic() @@ -115,7 +128,7 @@ class EventHook(object): called = 0 returns = [] for hook in self._hooks: - if max and called == max: + if maximum and called == maximum: break if event.eaten: break |
