From 940e74d6daa4b756c228bcac80885f79b069fa42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20T=C3=B3th?= Date: Fri, 23 Feb 2018 14:07:41 +0100 Subject: [PATCH] Implement triggered and triggerless EventHandler base classes --- .../components/source_code_event_handler.py | 4 ++-- lib/tfw/components/terminado_event_handler.py | 4 ++-- lib/tfw/event_handler_base.py | 24 ++++++++++++++++++- 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/lib/tfw/components/source_code_event_handler.py b/lib/tfw/components/source_code_event_handler.py index 9885e49..263b754 100644 --- a/lib/tfw/components/source_code_event_handler.py +++ b/lib/tfw/components/source_code_event_handler.py @@ -2,7 +2,7 @@ from os.path import isfile, join, relpath from glob import glob from tfw.components.mixins import SupervisorMixin -from tfw.event_handler_base import EventHandlerBase +from tfw.event_handler_base import TriggerlessEventHandler from tfw.components.directory_monitor import DirectoryMonitor from tfw.config.logs import logging @@ -43,7 +43,7 @@ class FileManager: return relpath(self._filepath(filename), start=self._workdir) -class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin): +class SourceCodeEventHandler(TriggerlessEventHandler, SupervisorMixin): def __init__(self, key, directory, process_name, selected_file=None): super().__init__(key) self.filemanager = FileManager(directory, selected_file=selected_file) diff --git a/lib/tfw/components/terminado_event_handler.py b/lib/tfw/components/terminado_event_handler.py index 1b9782c..42b09d2 100644 --- a/lib/tfw/components/terminado_event_handler.py +++ b/lib/tfw/components/terminado_event_handler.py @@ -1,11 +1,11 @@ -from tfw.event_handler_base import EventHandlerBase +from tfw.event_handler_base import TriggerlessEventHandler from tfw.components.mixins import SupervisorMixin from tfw.config import tfwenv from tfw.config.logs import logging log = logging.getLogger(__name__) -class TerminadoEventHandler(EventHandlerBase, SupervisorMixin): +class TerminadoEventHandler(TriggerlessEventHandler, SupervisorMixin): def __init__(self, key, process_name): super().__init__(key) self.working_directory = tfwenv.TERMINADO_DIR diff --git a/lib/tfw/event_handler_base.py b/lib/tfw/event_handler_base.py index a6c1b38..1a4d1c5 100644 --- a/lib/tfw/event_handler_base.py +++ b/lib/tfw/event_handler_base.py @@ -28,10 +28,17 @@ class EventHandlerBase: from .message_sender import MessageSender ms = MessageSender() ms.send('JOHN CENA', next(self.cenerator)) - response = self.handle_event(key, message) if key != 'reset' else self.handle_reset(message) + response = self.dispatch_handling(key, message) if response is None: return self.server_connector.send(key, response) + def dispatch_handling(self, key, message): + raise NotImplementedError + + def _dispatch_handling(self, key, message): + if key != 'reset': return self.handle_event(key, message) + else: return self.handle_reset(message) + def handle_event(self, key, data_json): raise NotImplementedError @@ -64,3 +71,18 @@ class EventHandlerBase: for sub in self.subscriptions: self.server_connector.unsubscribe(key=sub) self.subscriptions.clear() + + +class TriggerlessEventHandler(EventHandlerBase): + def dispatch_handling(self, key, message): + return self._dispatch_handling(key, message) + + +class TriggeredEventHandler(EventHandlerBase): + def __init__(self, key, trigger): + super().__init__(key) + self.trigger = trigger + + def dispatch_handling(self, key, message): + if message.get('trigger') == self.trigger: + return self._dispatch_handling(key, message)