""" Defines a dummy socket implementing (part of) the zmq.Socket interface. """ | |
# Copyright (c) IPython Development Team. | |
# Distributed under the terms of the Modified BSD License. | |
from queue import Queue | |
import zmq | |
from traitlets import HasTraits, Instance, Int | |
# ----------------------------------------------------------------------------- | |
# Dummy socket class | |
# ----------------------------------------------------------------------------- | |
class DummySocket(HasTraits): | |
"""A dummy socket implementing (part of) the zmq.Socket interface.""" | |
queue = Instance(Queue, ()) | |
message_sent = Int(0) # Should be an Event | |
context = Instance(zmq.Context) | |
def _context_default(self): | |
return zmq.Context() | |
# ------------------------------------------------------------------------- | |
# Socket interface | |
# ------------------------------------------------------------------------- | |
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""" | |