aboutsummaryrefslogtreecommitdiff
path: root/EventManager.py
diff options
context:
space:
mode:
authorGravatar jesopo2018-08-28 14:55:08 +0100
committerGravatar jesopo2018-08-28 14:55:08 +0100
commitb699c120a0894e464d7b2ae972ce13adbfcc54b8 (patch)
tree3d93f3f1f841d641bc30994f69fd0261e4206b42 /EventManager.py
parentSwitch to time.monotonic for comparisons, only send data at most once every .5 (diff)
signature
Change how specific events assure their hooks gets the event independant of
loading order
Diffstat (limited to 'EventManager.py')
-rw-r--r--EventManager.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/EventManager.py b/EventManager.py
index 23faba1b..33d4aa80 100644
--- a/EventManager.py
+++ b/EventManager.py
@@ -53,6 +53,9 @@ class EventHook(object):
self._call_notify = None
self._stored_events = []
+ def _make_event(self, kwargs):
+ return Event(self.bot, self.name, **kwargs)
+
def _get_path(self):
path = [self.name]
parent = self.parent
@@ -69,8 +72,8 @@ class EventHook(object):
self._hooks.sort(key=lambda x: x.priority)
if replay:
- for event in self._stored_events:
- callback.call(event)
+ for kwargs in self._stored_events:
+ callback.call(self._make_event(kwargs))
self._stored_events = None
def _unhook(self, hook):
@@ -95,17 +98,20 @@ class EventHook(object):
def call_for_result(self, default=None, max=None, **kwargs):
results = self.call(max=max, **kwargs)
return default if not len(results) else results[0]
+ def assure_call(self, **kwargs):
+ if not self._stored_events == None:
+ self._stored_events.append(kwargs)
+ else:
+ self.call(kwargs)
def call(self, max=None, **kwargs):
self.bot.log.debug("calling event: \"%s\" (params: %s)",
[self._get_path(), kwargs])
start = time.monotonic()
- event = Event(self.bot, self.name, **kwargs)
+ event = self._make_event(kwargs)
if self._call_notify:
self._call_notify(self, event)
- if not self._stored_events == None:
- self._stored_events.append(event)
called = 0
returns = []
for hook in self._hooks: