From 69f03f761507c64454e0bb0ab2f708df21451991 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20T=C3=B3th?= Date: Wed, 14 Mar 2018 14:08:48 +0100 Subject: [PATCH] Implement EventHandler command mirroring (EH -> EH communication) --- .../server/zmq_websocket_handler.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/tfw/networking/server/zmq_websocket_handler.py b/lib/tfw/networking/server/zmq_websocket_handler.py index de2932e..017040e 100644 --- a/lib/tfw/networking/server/zmq_websocket_handler.py +++ b/lib/tfw/networking/server/zmq_websocket_handler.py @@ -21,12 +21,23 @@ class ZMQWebSocketHandler(WebSocketHandler): log.debug('WebSocket connection initiated') self._event_handler_connector.register_callback(self.zmq_callback) - @staticmethod - def zmq_callback(msg_parts): + @classmethod + def zmq_callback(cls, msg_parts): + keyhandlers = {'mirror': cls.mirror} + key, data = deserialize_all(*msg_parts) log.debug('Received on pull socket: {}'.format(data)) - for instance in ZMQWebSocketHandler.instances: - instance.write_message(data) + if key not in keyhandlers: + for instance in cls.instances: + instance.write_message(data) + else: + try: keyhandlers[key](data['data']) + except KeyError: log.error('Invalid mirror message format! Ignoring.') + + @classmethod + def mirror(cls, data): + key = data['key'] + cls._event_handler_connector.send_message({'data': data}, key) def on_message(self, message): log.debug('Received on WebSocket: {}'.format(message))