Make TFWServer FSMAware

This commit is contained in:
Kristóf Tóth 2018-07-25 15:46:39 +02:00
parent ca09e868f1
commit 7fb5a37831

View File

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