diff options
author | Kevin O'Connor <kevin@koconnor.net> | 2020-02-19 10:49:56 -0500 |
---|---|---|
committer | Kevin O'Connor <kevin@koconnor.net> | 2020-02-19 10:49:56 -0500 |
commit | e3a5e2d271d1ead9112654bc19d631aa2cb944ee (patch) | |
tree | 1efbfca8555397e8684fdab9d005cd3faba015c0 | |
parent | 0e37f8c9b331665926486dc2c9408e2023a20ab1 (diff) | |
download | kutter-e3a5e2d271d1ead9112654bc19d631aa2cb944ee.tar.gz kutter-e3a5e2d271d1ead9112654bc19d631aa2cb944ee.tar.xz kutter-e3a5e2d271d1ead9112654bc19d631aa2cb944ee.zip |
reactor: Support multiple waiting timers on a single completion
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
-rw-r--r-- | klippy/reactor.py | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/klippy/reactor.py b/klippy/reactor.py index 164f21b7..3cd7aa01 100644 --- a/klippy/reactor.py +++ b/klippy/reactor.py @@ -20,18 +20,19 @@ class ReactorCompletion: def __init__(self, reactor): self.reactor = reactor self.result = self.sentinel - self.waiting = None + self.waiting = [] def test(self): return self.result is not self.sentinel def complete(self, result): self.result = result - if self.waiting is not None: - self.reactor.update_timer(self.waiting.timer, self.reactor.NOW) + for wait in self.waiting: + self.reactor.update_timer(wait.timer, self.reactor.NOW) def wait(self, waketime=_NEVER, waketime_result=None): if self.result is self.sentinel: - self.waiting = greenlet.getcurrent() + wait = greenlet.getcurrent() + self.waiting.append(wait) self.reactor.pause(waketime) - self.waiting = None + self.waiting.remove(wait) if self.result is self.sentinel: return waketime_result return self.result |