39 lines
932 B
Python
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()
|