mirror of
				https://github.com/avatao-content/baseimage-tutorial-framework
				synced 2025-11-04 10:22:56 +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