123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- """MonitoredQueue classes and functions."""
- # Copyright (C) PyZMQ Developers
- # Distributed under the terms of the Modified BSD License.
- from zmq import ZMQError, PUB
- from zmq.devices.proxydevice import ProxyBase, Proxy, ThreadProxy, ProcessProxy
- from zmq.devices.monitoredqueue import monitored_queue
- class MonitoredQueueBase(ProxyBase):
- """Base class for overriding methods."""
-
- _in_prefix = b''
- _out_prefix = b''
-
- def __init__(self, in_type, out_type, mon_type=PUB, in_prefix=b'in', out_prefix=b'out'):
-
- ProxyBase.__init__(self, in_type=in_type, out_type=out_type, mon_type=mon_type)
-
- self._in_prefix = in_prefix
- self._out_prefix = out_prefix
- def run_device(self):
- ins,outs,mons = self._setup_sockets()
- monitored_queue(ins, outs, mons, self._in_prefix, self._out_prefix)
- class MonitoredQueue(MonitoredQueueBase, Proxy):
- """Class for running monitored_queue in the background.
- See zmq.devices.Device for most of the spec. MonitoredQueue differs from Proxy,
- only in that it adds a ``prefix`` to messages sent on the monitor socket,
- with a different prefix for each direction.
-
- MQ also supports ROUTER on both sides, which zmq.proxy does not.
- If a message arrives on `in_sock`, it will be prefixed with `in_prefix` on the monitor socket.
- If it arrives on out_sock, it will be prefixed with `out_prefix`.
- A PUB socket is the most logical choice for the mon_socket, but it is not required.
- """
- pass
- class ThreadMonitoredQueue(MonitoredQueueBase, ThreadProxy):
- """Run zmq.monitored_queue in a background thread.
-
- See MonitoredQueue and Proxy for details.
- """
- pass
- class ProcessMonitoredQueue(MonitoredQueueBase, ProcessProxy):
- """Run zmq.monitored_queue in a background thread.
-
- See MonitoredQueue and Proxy for details.
- """
- __all__ = [
- 'MonitoredQueue',
- 'ThreadMonitoredQueue',
- 'ProcessMonitoredQueue'
- ]
|