aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/reactor.py
diff options
context:
space:
mode:
authorKevin O'Connor <kevin@koconnor.net>2020-02-19 10:49:56 -0500
committerKevin O'Connor <kevin@koconnor.net>2020-02-19 10:49:56 -0500
commite3a5e2d271d1ead9112654bc19d631aa2cb944ee (patch)
tree1efbfca8555397e8684fdab9d005cd3faba015c0 /klippy/reactor.py
parent0e37f8c9b331665926486dc2c9408e2023a20ab1 (diff)
downloadkutter-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>
Diffstat (limited to 'klippy/reactor.py')
-rw-r--r--klippy/reactor.py11
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