mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2025-06-28 21:35:12 +00:00
Merge pull request #13 from avatao-content/bottomless_pit
Refactor TFW architecture to support stateless event handling
This commit is contained in:
@ -24,9 +24,9 @@ class WebideReloadEventHandler(FileSystemEventHandler):
|
||||
def on_modified(self, event):
|
||||
if self._paused: return
|
||||
log.debug(event)
|
||||
anchor = 'anchor_webide'
|
||||
self.uplink.send(anchor, {'anchor': anchor,
|
||||
'data': {'command': 'reload'}})
|
||||
key = 'webide'
|
||||
self.uplink.send(key, {'key': key,
|
||||
'data': {'command': 'reload'}})
|
||||
|
||||
|
||||
class DirectoryMonitor:
|
||||
|
@ -1,8 +1,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,11 +42,10 @@ class FileManager:
|
||||
return relpath(self._filepath(filename), start=self._workdir)
|
||||
|
||||
|
||||
class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin):
|
||||
def __init__(self, anchor, directory, process_name, selected_file=None):
|
||||
super().__init__(anchor)
|
||||
class SourceCodeEventHandler(TriggerlessEventHandler):
|
||||
def __init__(self, key, directory, selected_file=None):
|
||||
super().__init__(key)
|
||||
self.filemanager = FileManager(directory, selected_file=selected_file)
|
||||
self.process_name = process_name
|
||||
|
||||
self.commands = {
|
||||
'read': self.read,
|
||||
@ -69,7 +67,6 @@ class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin):
|
||||
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):
|
||||
@ -81,7 +78,7 @@ class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin):
|
||||
data['filename'] = self.filemanager.filename
|
||||
data['files'] = self.filemanager.files
|
||||
|
||||
def handle_event(self, anchor, data_json):
|
||||
def handle_event(self, key, data_json):
|
||||
data = data_json['data']
|
||||
data_json['data'] = self.commands[data['command']](data)
|
||||
self.attach_fileinfo(data)
|
||||
|
@ -1,17 +1,17 @@
|
||||
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):
|
||||
def __init__(self, anchor, process_name):
|
||||
super().__init__(anchor)
|
||||
class TerminadoEventHandler(TriggerlessEventHandler, SupervisorMixin):
|
||||
def __init__(self, key, process_name):
|
||||
super().__init__(key)
|
||||
self.working_directory = tfwenv.TERMINADO_DIR
|
||||
self.process_name = process_name
|
||||
self.start_process()
|
||||
|
||||
def handle_event(self, anchor, data_json):
|
||||
log.debug('TerminadoEventHandler received event for anchor {}'.format(anchor))
|
||||
def handle_event(self, key, data_json):
|
||||
log.debug('TerminadoEventHandler received event for key {}'.format(key))
|
||||
# TODO: wat do?
|
||||
|
Reference in New Issue
Block a user