From cd5f7084daf028a9aafe816267174a5d3d5f6415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Bokros?= Date: Mon, 29 Jan 2018 16:07:36 +0100 Subject: [PATCH] Split ServerConnector to single responsibility classes --- src/event_handlers/server_connector.py | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/event_handlers/server_connector.py b/src/event_handlers/server_connector.py index ca7e77e..0856452 100644 --- a/src/event_handlers/server_connector.py +++ b/src/event_handlers/server_connector.py @@ -9,18 +9,33 @@ from config import PUBLISHER_PORT, RECEIVER_PORT ioloop.install() -class ServerConnector: - def __init__(self): - self._zmq_context = zmq.Context.instance() +class ServerConnectorBase: + def __init__(self, zmq_context=None): + self._zmq_context = zmq_context or zmq.Context.instance() + + +class ServerDownlinkConnector(ServerConnectorBase): + def __init__(self, zmq_context=None): + super(ServerDownlinkConnector, self).__init__(zmq_context) self._zmq_sub_socket = self._zmq_context.socket(zmq.SUB) self._zmq_sub_socket.connect('tcp://localhost:{}'.format(PUBLISHER_PORT)) self._zmq_sub_stream = ZMQStream(self._zmq_sub_socket) - self._zmq_push_socket = self._zmq_context.socket(zmq.PUSH) - self._zmq_push_socket.connect('tcp://localhost:{}'.format(RECEIVER_PORT)) self.subscribe = partial(self._zmq_sub_socket.setsockopt_string, zmq.SUBSCRIBE) self.unsubscribe = partial(self._zmq_sub_socket.setsockopt_string, zmq.UNSUBSCRIBE) self.register_callback = self._zmq_sub_stream.on_recv + +class ServerUplinkConnector(ServerConnectorBase): + def __init__(self, zmq_context=None): + super(ServerUplinkConnector, self).__init__(zmq_context) + self._zmq_push_socket = self._zmq_context.socket(zmq.PUSH) + self._zmq_push_socket.connect('tcp://localhost:{}'.format(RECEIVER_PORT)) + def send(self, anchor, response): self._zmq_push_socket.send_multipart([anchor, response]) + + +class ServerConnector(ServerUplinkConnector, ServerDownlinkConnector): + def __init__(self, zmq_context=None): + super(ServerConnector, self).__init__(zmq_context)