Source code for alphatwirl.loop.EventLoopRunner

# Tai Sakuma <tai.sakuma@gmail.com>

##__________________________________________________________________||
[docs]class EventLoopRunner: """This class runs instances of `EventLoop` and keeps the results. It will return the results when `end()` is called. """
[docs] def __init__(self): self.idx = -1 # so it starts from 0 self.idx_result_pairs = [ ]
def __repr__(self): return '{}()'.format( self.__class__.__name__, ) def begin(self): self.idx_result_pairs = [ ] def run(self, eventLoop): self.idx += 1 result = eventLoop() self.idx_result_pairs.append((self.idx, result)) return self.idx def run_multiple(self, eventLoops): idxs = [ ] for eventLoop in eventLoops: idxs.append(self.run(eventLoop)) return idxs def poll(self): return self.receive() def receive_one(self): if self.idx_result_pairs: return self.idx_result_pairs.pop(0) return None def receive(self): ret = self.idx_result_pairs[:] del self.idx_result_pairs[:] return ret def end(self): return [r for _, r in self.receive()]
##__________________________________________________________________||