From 2e4da4f7bda72184c7a6af82d77d1a4ef515c013 Mon Sep 17 00:00:00 2001 From: Isaac Gonzalez Date: Thu, 17 May 2012 14:28:07 -0400 Subject: [PATCH] add pub sub logging --- brubeck/connections.py | 12 +++++++++--- demos/m2reader.py | 5 +++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/brubeck/connections.py b/brubeck/connections.py index 17fe1d6..f3e31bb 100644 --- a/brubeck/connections.py +++ b/brubeck/connections.py @@ -20,16 +20,20 @@ class Connection(object): response is necessary. """ - def __init__(self, incoming=None, outgoing=None): + def __init__(self, incoming=None, outgoing=None, logger=None): """The base `__init__()` function configures a unique ID and assigns the incoming and outgoing mechanisms to a name. `in_sock` and `out_sock` feel like misnomers at this time but they are preserved for a transition period. + + logger may be a zeromq PUB socket. """ self.sender_id = uuid4().hex self.in_sock = incoming self.out_sock = outgoing + if logging: + self.logger = logger def _unsupported(self, name): """Simple function that raises an exception. @@ -130,7 +134,7 @@ class Mongrel2Connection(Connection): """ MAX_IDENTS = 100 - def __init__(self, pull_addr, pub_addr): + def __init__(self, pull_addr, pub_addr, logger=None): """sender_id = uuid.uuid4() or anything unique pull_addr = pull socket used for incoming messages pub_addr = publish socket used for outgoing messages @@ -144,7 +148,7 @@ def __init__(self, pull_addr, pub_addr): in_sock = ctx.socket(zmq.PULL) out_sock = ctx.socket(zmq.PUB) - super(Mongrel2Connection, self).__init__(in_sock, out_sock) + super(Mongrel2Connection, self).__init__(in_sock, out_sock, logger=logger) self.in_addr = pull_addr self.out_addr = pub_addr @@ -171,6 +175,8 @@ def recv(self): zeromq socket and return whatever is found. """ zmq_msg = self.in_sock.recv() + if self.logger: + self.logger.send(zmq_msg) return zmq_msg def recv_forever_ever(self, application): diff --git a/demos/m2reader.py b/demos/m2reader.py index 99d4ea1..af84d1e 100755 --- a/demos/m2reader.py +++ b/demos/m2reader.py @@ -3,8 +3,9 @@ import zmq ctx = zmq.Context() -s = ctx.socket(zmq.PULL) -s.connect("ipc://127.0.0.1:9999") +s = ctx.socket(zmq.SUB) +s.connect("tcp://127.0.0.1:9955") +s.setsockopt(zmq.SUBSCRIBE, "") while True: msg = s.recv()