diff --git a/solvable/src/event_handler_main.py b/solvable/src/event_handler_main.py index 9ff99e5..a4f231a 100644 --- a/solvable/src/event_handler_main.py +++ b/solvable/src/event_handler_main.py @@ -1,9 +1,10 @@ from ast import literal_eval from functools import partial +from signal import signal, SIGTERM, SIGINT from tornado.ioloop import IOLoop -from tfw import YamlFSM, FSMAwareEventHandler +from tfw import YamlFSM, FSMAwareEventHandler, EventHandlerBase from tfw.components import IdeEventHandler, TerminalEventHandler from tfw.components import ProcessManagingEventHandler, BashMonitor from tfw.components import TerminalCommands, LogMonitoringEventHandler @@ -136,9 +137,12 @@ if __name__ == '__main__': # Example terminal command callback terminal.historymonitor.subscribe_callback(cenator) - try: - IOLoop.instance().start() - finally: - eventhandlers = {fsm, ide, terminal, processmanager, logmonitor, message_fsm_steps} - for eh in eventhandlers: + event_handlers = EventHandlerBase.get_local_instances() + def cleanup(sig, frame): + for eh in event_handlers: eh.cleanup() + exit(0) + signal(SIGTERM, cleanup) + signal(SIGINT, cleanup) + + IOLoop.instance().start() diff --git a/solvable/src/pipe_io_main.py b/solvable/src/pipe_io_main.py new file mode 100644 index 0000000..26e7349 --- /dev/null +++ b/solvable/src/pipe_io_main.py @@ -0,0 +1,24 @@ +from signal import signal, SIGTERM, SIGINT + +from tornado.ioloop import IOLoop + +from tfw import EventHandlerBase +from tfw.components import PipeIOEventHandler + + +if __name__ == '__main__': + pipe_io = PipeIOEventHandler( + '', + '/tmp/tfw_send', + '/tmp/tfw_recv' + ) + + event_handlers = EventHandlerBase.get_local_instances() + def cleanup(sig, frame): + for eh in event_handlers: + eh.cleanup() + exit(0) + signal(SIGTERM, cleanup) + signal(SIGINT, cleanup) + + IOLoop.instance().start() diff --git a/solvable/supervisor/pipe_io_main.conf b/solvable/supervisor/pipe_io_main.conf new file mode 100644 index 0000000..bdf8a1a --- /dev/null +++ b/solvable/supervisor/pipe_io_main.conf @@ -0,0 +1,4 @@ +[program:pipe_io_main] +user=root +directory=%(ENV_TFW_EHMAIN_DIR)s +command=python3 pipe_io_main.py