from framestate import FrameState import Queue class InChannel(object): """ container for events from the client use 'add_event(ClientEvent instance)' to add an event to the FIFO, 'pop_state()' to get a FrameState instance from the stored events and clear the FIFO """ def __init__(self): self._events = Queue.Queue() self._prevstate = None def add_event(self, event): self._events.put(event) def pop_state(self): s = FrameState(self._prevstate) while not self._events.empty(): e = self._events.get() s.process_event(e) self._prevstate = s return s