summaryrefslogtreecommitdiff
path: root/service/pixelated/reactor_manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'service/pixelated/reactor_manager.py')
-rw-r--r--service/pixelated/reactor_manager.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/service/pixelated/reactor_manager.py b/service/pixelated/reactor_manager.py
new file mode 100644
index 00000000..01f7f545
--- /dev/null
+++ b/service/pixelated/reactor_manager.py
@@ -0,0 +1,26 @@
+import signal
+import sys
+from threading import Thread
+from twisted.internet import reactor
+
+
+def signal_handler(signal, frame):
+ stop_reactor_on_exit()
+ sys.exit(0)
+
+
+def start_reactor():
+ def start_reactor_run():
+ reactor.run(False)
+
+ global REACTOR_THREAD
+ REACTOR_THREAD = Thread(target=start_reactor_run)
+ REACTOR_THREAD.start()
+
+
+def stop_reactor_on_exit():
+ reactor.callFromThread(reactor.stop)
+ global REACTOR_THREAD
+ REACTOR_THREAD = None
+
+signal.signal(signal.SIGINT, signal_handler)