From 66d684f022f4a947ddbe1d2b9f4dbd43c2c80f4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1lint=20Bokros?= Date: Mon, 27 Nov 2017 18:20:09 +0100 Subject: [PATCH] Refactor Component to Component and ComponentBase --- src/components/component.py | 27 ++++++++------------------- src/components/component_base.py | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 src/components/component_base.py diff --git a/src/components/component.py b/src/components/component.py index a4e2a05..1564f6f 100644 --- a/src/components/component.py +++ b/src/components/component.py @@ -1,31 +1,20 @@ import json from functools import partial -import zmq -from zmq.eventloop.zmqstream import ZMQStream -from zmq.eventloop import ioloop - -from config import RECEIVER_PORT, PUBLISHER_PORT - -ioloop.install() +from component_base import ComponentBase -class Component: +class Component(ComponentBase): def __init__(self, anchor, event_handler, zmq_context=None): - self.anchor = anchor - self.event_handler = event_handler - self.zmq_context = zmq_context or zmq.Context.instance() - self.zmq_sub_socket = self.zmq_context.socket(zmq.SUB) - self.zmq_sub_socket.setsockopt_string(zmq.SUBSCRIBE, anchor) - 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)) + super().__init__(anchor, event_handler, zmq_context) def wrapper(msg_parts, handler): anchor, message = msg_parts data_json = json.loads(message) - response = json.dumps(handler(data_json)).encode('utf-8') - self.zmq_push_socket.send_multipart([anchor, response]) + response = handler(data_json, self) + encoded_response = json.dumps(response).encode('utf-8') + self.zmq_push_socket.send_multipart([anchor, encoded_response]) self.zmq_sub_stream.on_recv(partial(wrapper, handler=event_handler)) + + diff --git a/src/components/component_base.py b/src/components/component_base.py new file mode 100644 index 0000000..fa192c5 --- /dev/null +++ b/src/components/component_base.py @@ -0,0 +1,21 @@ +import zmq +from zmq.eventloop import ioloop +from zmq.eventloop.zmqstream import ZMQStream + +from config import PUBLISHER_PORT, RECEIVER_PORT + +ioloop.install() + + +class ComponentBase: + def __init__(self, anchor, event_handler, zmq_context=None): + self.anchor = anchor + self.event_handler = event_handler + self.zmq_context = zmq_context or zmq.Context.instance() + self.zmq_sub_socket = self.zmq_context.socket(zmq.SUB) + self.zmq_sub_socket.setsockopt_string(zmq.SUBSCRIBE, anchor) + 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)) +