diff --git a/src/util.py b/src/util.py new file mode 100644 --- /dev/null +++ b/src/util.py @@ -0,0 +1,28 @@ +import multiprocessing +import logging as log + + +class MsgQueue: + def __init__(self,handler=None): + self._queue=multiprocessing.Queue() + self._event=multiprocessing.Event() + self._handleEvent=handler + + def send(self,actionName,args=tuple(),kwargs=None): + if kwargs is None: kwargs=dict() + self._queue.put((actionName,args,kwargs)) + self._event.set() + + def listen(self,handleEvent=None): + if handleEvent is not None: self._handleEvent=handleEvent + + while True: + self._event.wait() + msg=self._queue.get() + if self._queue.empty(): + self._event.clear() + log.info(msg) + self._handleEvent(msg) + + def setHandler(self,handler): + self._handleEvent=handler