From e451de2179a92008802e0cdc538d364e9ebbcc13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krist=C3=B3f=20T=C3=B3th?= Date: Fri, 2 Mar 2018 10:21:56 +0100 Subject: [PATCH] Implement DirectoryMonitor support in ProcessManagingEventHandler --- .../components/process_managing_event_handler.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/tfw/components/process_managing_event_handler.py b/lib/tfw/components/process_managing_event_handler.py index ec20fce..6fcc248 100644 --- a/lib/tfw/components/process_managing_event_handler.py +++ b/lib/tfw/components/process_managing_event_handler.py @@ -1,3 +1,5 @@ +from functools import wraps + from tfw.event_handler_base import TriggerlessEventHandler from tfw.components.mixins import SupervisorMixin from tfw.networking.event_handlers.server_connector import ServerUplinkConnector @@ -16,12 +18,23 @@ class ProcessManager(SupervisorMixin): class ProcessManagingEventHandler(TriggerlessEventHandler): - def __init__(self, key): + def __init__(self, key, dirmonitor=None): super().__init__(key) self.key = key + self.monitor = dirmonitor self.processmanager = ProcessManager() self.uplink = ServerUplinkConnector() + def _with_monitor_paused(fun): + @wraps(fun) + def wrapper(self, *args, **kwargs): + if self.monitor: + with self.monitor.pauser: + return fun(self, *args, **kwargs) + return fun(self, *args, **kwargs) + return wrapper + + @_with_monitor_paused def handle_event(self, key, data_json): data = data_json['data'] self.processmanager(data['command'], data['process_name'])