diff --git a/lib/tfw/components/directory_monitor.py b/lib/tfw/components/directory_monitor.py index 7e7a11e..5c7da14 100644 --- a/lib/tfw/components/directory_monitor.py +++ b/lib/tfw/components/directory_monitor.py @@ -42,3 +42,15 @@ class DirectoryMonitor: def stop(self): self.observer.stop() self.observer.join() + + @property + def pauser(self): + return DirectoryMonitor.Pauser(self) + + class Pauser: + def __init__(self, directory_monitor): + self.directorymonitor = directory_monitor + def __enter__(self): + self.directorymonitor.pause() + def __exit__(self, exc_type, exc_val, exc_tb): + self.directorymonitor.resume() diff --git a/lib/tfw/components/source_code_event_handler.py b/lib/tfw/components/source_code_event_handler.py index d838a27..b0d079a 100644 --- a/lib/tfw/components/source_code_event_handler.py +++ b/lib/tfw/components/source_code_event_handler.py @@ -68,11 +68,10 @@ class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin): return data def write(self, data): - self.monitor.pause() - try: self.filemanager.file_contents = data['content'] - except Exception: log.exception('Error writing file!') - self.restart_process() - self.monitor.resume() + with self.monitor.pauser: + try: self.filemanager.file_contents = data['content'] + except Exception: log.exception('Error writing file!') + self.restart_process() return data def select(self, data):