abots/abots/events/coroutines.py

39 lines
932 B
Python

from abots.helpers import coroutine
class CoroEvent:
def __init__(self):
self._set = False
self._targets = list()
self._events = self._loop()
@coroutine
def _loop(self):
try:
while True:
action = (yield)
print(action)
if action == "set":
self._set = True
for info in self._targets:
target, event = info
target.send(event)
elif action == "clear":
self._set = False
except GeneratorExit:
pass
def is_set(self):
return self._set
def set(self):
self._events.send("set")
def clear(self):
self._events.send("clear")
def wait(self, target, event):
self._targets.append((target, event))
def close(self):
self._events.close()