first comit
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
"""pure Python monitored_queue function
|
||||
|
||||
For use when Cython extension is unavailable (PyPy).
|
||||
|
||||
Authors
|
||||
-------
|
||||
* MinRK
|
||||
"""
|
||||
|
||||
# Copyright (C) PyZMQ Developers
|
||||
# Distributed under the terms of the Modified BSD License.
|
||||
|
||||
import zmq
|
||||
|
||||
|
||||
def _relay(ins, outs, sides, prefix, swap_ids):
|
||||
msg = ins.recv_multipart()
|
||||
if swap_ids:
|
||||
msg[:2] = msg[:2][::-1]
|
||||
outs.send_multipart(msg)
|
||||
sides.send_multipart([prefix] + msg)
|
||||
|
||||
|
||||
def monitored_queue(
|
||||
in_socket, out_socket, mon_socket, in_prefix=b'in', out_prefix=b'out'
|
||||
):
|
||||
swap_ids = in_socket.type == zmq.ROUTER and out_socket.type == zmq.ROUTER
|
||||
|
||||
poller = zmq.Poller()
|
||||
poller.register(in_socket, zmq.POLLIN)
|
||||
poller.register(out_socket, zmq.POLLIN)
|
||||
while True:
|
||||
events = dict(poller.poll())
|
||||
if in_socket in events:
|
||||
_relay(in_socket, out_socket, mon_socket, in_prefix, swap_ids)
|
||||
if out_socket in events:
|
||||
_relay(out_socket, in_socket, mon_socket, out_prefix, swap_ids)
|
||||
|
||||
|
||||
__all__ = ['monitored_queue']
|
||||
Reference in New Issue
Block a user