class ZMQEventReceiver(EventReceiver): def __init__(self, store=None): """ If store is set it should be an EventStore object where we'll save events as they arrive """ self.sockets = [] self.poller = zmq.core.poll.Poller() self.mh = MessageHandler() self.store = store def listen(self, sock): """ Add sock (a zmq socket) to list of sockets we'll listen for events on """ self.sockets.append(sock) self.poller.register(sock, zmq.POLLIN) def getEvent(self, timeout=None): """ Get the next event. Wait for timeout milli-seconds or forever if timeout is None """ socks = self.poller.poll(timeout) if not socks: return msg = socks[0][0].recv() d = self.mh.unserialize(msg) e = Event.fromDict(d) if self.store: _id = self.store.addEvent(e) e.id = _id return e
def __init__(self, store=None): """ If store is set it should be an EventStore object where we'll save events as they arrive """ self.sockets = [] self.poller = zmq.core.poll.Poller() self.mh = MessageHandler() self.store = store
class ZMQEventPublisher(EventPublisher): def __init__(self): self.sockets = [] self.mh = MessageHandler() def addSocket(self, sock): self.sockets.append(sock) def sendEvent(self, e): msg = self.mh.serialize(e.asDict()) for sock in self.sockets: sock.send(msg)
def __init__(self): self.sockets = [] self.mh = MessageHandler()