|
|
""" Defines a dummy socket implementing (part of) the zmq.Socket interface. """ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from queue import Queue |
|
|
|
|
|
import zmq |
|
|
from traitlets import HasTraits, Instance, Int |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DummySocket(HasTraits): |
|
|
"""A dummy socket implementing (part of) the zmq.Socket interface.""" |
|
|
|
|
|
queue = Instance(Queue, ()) |
|
|
message_sent = Int(0) |
|
|
context = Instance(zmq.Context) |
|
|
|
|
|
def _context_default(self): |
|
|
return zmq.Context() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def recv_multipart(self, flags=0, copy=True, track=False): |
|
|
"""Recv a multipart message.""" |
|
|
return self.queue.get_nowait() |
|
|
|
|
|
def send_multipart(self, msg_parts, flags=0, copy=True, track=False): |
|
|
"""Send a multipart message.""" |
|
|
msg_parts = list(map(zmq.Message, msg_parts)) |
|
|
self.queue.put_nowait(msg_parts) |
|
|
self.message_sent += 1 |
|
|
|
|
|
def flush(self, timeout=1.0): |
|
|
"""no-op to comply with stream API""" |
|
|
|