diff --git a/lib/tfw/networking/server/tfw_server.py b/lib/tfw/networking/server/tfw_server.py index c0d98f5..f4a83a6 100644 --- a/lib/tfw/networking/server/tfw_server.py +++ b/lib/tfw/networking/server/tfw_server.py @@ -9,20 +9,23 @@ from tornado.web import Application from tfw.networking.event_handlers import ServerUplinkConnector from tfw.networking.server import EventHandlerConnector from tfw.networking import MessageSender +from tfw.networking.fsm_aware import FSMAware from tfw.crypto import KeyManager, verify_message, sign_message from tfw.config.logs import logging + from .zmq_websocket_proxy import ZMQWebSocketProxy LOG = logging.getLogger(__name__) -class TFWServer: +class TFWServer(FSMAware): """ This class handles the proxying of messages between the frontend and event handers. It proxies messages from the "/ws" route to all event handlers subscribed to a ZMQ SUB socket. """ def __init__(self): + super().__init__() self._event_handler_connector = EventHandlerConnector() self._uplink_connector = ServerUplinkConnector() self._auth_key = KeyManager().auth_key @@ -30,7 +33,11 @@ class TFWServer: self.application = Application([( r'/ws', ZMQWebSocketProxy, { 'event_handler_connector': self._event_handler_connector, - 'message_handlers': [self.handle_trigger, self.handle_recover], + 'message_handlers': [ + self.handle_trigger, + self.handle_recover, + self.handle_fsm_update + ], 'frontend_message_handlers': [self.save_frontend_messages] })]) @@ -55,6 +62,9 @@ class TFWServer: self._frontend_messages.replay_messages(self._uplink_connector) self._frontend_messages.clear() + def handle_fsm_update(self, message): + self.update_fsm_data(message) + def save_frontend_messages(self, message): self._frontend_messages.save_message(message)