mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2025-06-28 10:45:12 +00:00
Use prefix matching in ZMQConnector
This commit is contained in:
Notes:
R. Richard
2019-09-04 21:27:26 +02:00
- Control/Signed/FSMAwareEventHandler unit tesztek - command_handler dict automatikus generálása - frontend keyup ne hallgasson már a nyilakra meg ilyenekre - CommandEventHandler humble object + tesztek - terminalba írás ideiglenes letiltása - ha nem kell egy komponens ki lehessen venni - pipe, ami aláírja az üzenetet, amit beleküldünk - legyen pötyögtetés a message queue elején - a queue thread-jét lehessen join-olni várakozás közben is - PipeConnector nyissa meg a már előtte is létező pipe-okat
@ -4,26 +4,25 @@ from .message_storage import FrontendMessageStorage
|
||||
|
||||
|
||||
class FrontendHandler:
|
||||
# TODO: do not store dashboard messages like reloadFrontend
|
||||
keys = [
|
||||
'console.read',
|
||||
'console.write',
|
||||
'console.showLiveLogs',
|
||||
'console.rewriteContentWithProcessLogsOnDeploy',
|
||||
'dashboard.layout',
|
||||
'dashboard.hideMessages',
|
||||
'dashboard.terminalMenuItem',
|
||||
'dashboard.reloadFrontend',
|
||||
'dashboard.reloadIframe',
|
||||
'message.config',
|
||||
'message.queue',
|
||||
'message.send'
|
||||
]
|
||||
# keys = [
|
||||
# 'console.read',
|
||||
# 'console.write',
|
||||
# 'console.showLiveLogs',
|
||||
# 'console.rewriteContentWithProcessLogsOnDeploy',
|
||||
# 'dashboard.layout',
|
||||
# 'dashboard.hideMessages',
|
||||
# 'dashboard.terminalMenuItem',
|
||||
# 'dashboard.reloadFrontend',
|
||||
# 'dashboard.reloadIframe',
|
||||
# 'message.config',
|
||||
# 'message.queue',
|
||||
# 'message.send'
|
||||
# ]
|
||||
keys = ['console', 'dashboard', 'message', 'ide.read', 'recover']
|
||||
|
||||
def __init__(self):
|
||||
self.connector = None
|
||||
self.keys = [*type(self).keys, 'recover']
|
||||
self._frontend_message_storage = FrontendMessageStorage(type(self).keys)
|
||||
self._frontend_message_storage = FrontendMessageStorage()
|
||||
|
||||
def send_message(self, message):
|
||||
self.connector.send_message(message, scope=Scope.WEBSOCKET)
|
||||
@ -32,7 +31,12 @@ class FrontendHandler:
|
||||
self._frontend_message_storage.save_message(message)
|
||||
if message['key'] == 'recover':
|
||||
self.recover_frontend()
|
||||
self.send_message(message)
|
||||
if self._filter_message(message):
|
||||
self.send_message(message)
|
||||
|
||||
@staticmethod
|
||||
def _filter_message(message):
|
||||
return not message['key'].startswith('ide')
|
||||
|
||||
def recover_frontend(self):
|
||||
for message in self._frontend_message_storage.messages:
|
||||
|
@ -29,16 +29,25 @@ class MessageStorage(ABC):
|
||||
|
||||
|
||||
class FrontendMessageStorage(MessageStorage):
|
||||
def __init__(self, keys):
|
||||
self._keys = keys
|
||||
super().__init__()
|
||||
|
||||
def _filter_message(self, message):
|
||||
key = message['key']
|
||||
return key in self._keys
|
||||
return message['key'].startswith((
|
||||
'console.write',
|
||||
'dashboard.layout',
|
||||
'dashboard.terminalMenuItem',
|
||||
'message.send',
|
||||
'message.config',
|
||||
'ide.read'
|
||||
))
|
||||
|
||||
def _transform_message(self, message):
|
||||
if message['key'] == 'queueMessages':
|
||||
yield from MessageSender.generate_messages_from_queue(message)
|
||||
else:
|
||||
yield message
|
||||
transformations = {
|
||||
'message.queue': MessageSender.generate_messages_from_queue,
|
||||
'ide.read': self._delete_ide_content
|
||||
}
|
||||
if message['key'] in transformations:
|
||||
yield from transformations[message['key']](message)
|
||||
|
||||
@staticmethod
|
||||
def _delete_ide_content(message):
|
||||
del message['content']
|
||||
yield message
|
||||
|
Reference in New Issue
Block a user