added signal (SIGINT) handler for gracefully exit
This commit is contained in:
+24
-5
@@ -1,6 +1,7 @@
|
||||
import socket
|
||||
import selectors
|
||||
import time
|
||||
import signal, os
|
||||
|
||||
from msg_container import MsgContainer
|
||||
from receiver.nmea_packetizer import NmeaPacketizer
|
||||
@@ -34,8 +35,9 @@ class NetworkBackend(ABackend):
|
||||
self.thread.start()
|
||||
|
||||
def stop(self):
|
||||
self.loop_enable = False
|
||||
self.thread.join()
|
||||
if self.loop_enable:
|
||||
self.loop_enable = False
|
||||
self.thread.join()
|
||||
|
||||
def create_xcvr(self, name: str) -> Transceiver:
|
||||
obj = Transceiver(self, name)
|
||||
@@ -113,6 +115,12 @@ class NetworkBackend(ABackend):
|
||||
finally:
|
||||
self.sel.close()
|
||||
|
||||
def handler(signum, frame, be: NetworkBackend):
|
||||
sig_name = signal.Signals(signum).name
|
||||
print(f'Signal handler called with signal {sig_name} ({signum})')
|
||||
be.stop()
|
||||
be.disconnect()
|
||||
|
||||
if __name__ == "__main__":
|
||||
server_list = [
|
||||
{'name': " neo-f9p", 'host': "192.168.22.93", 'port': 8721},
|
||||
@@ -120,8 +128,13 @@ if __name__ == "__main__":
|
||||
]
|
||||
|
||||
transceiver = {}
|
||||
|
||||
# TCPIP multi source receiver
|
||||
mc = NetworkBackend(server_list)
|
||||
|
||||
# Set the signal handler
|
||||
signal.signal(signal.SIGINT, lambda signum, frame: handler(signum, frame, mc))
|
||||
|
||||
for grm in [" neo-f9p", "zed-x20p"]:
|
||||
nmea_rx_list = [
|
||||
Gll(grm, 'GN'),
|
||||
@@ -170,9 +183,13 @@ if __name__ == "__main__":
|
||||
# Start thread
|
||||
mc.start()
|
||||
|
||||
for n in range(10):
|
||||
for grm in [" neo-f9p", "zed-x20p"]:
|
||||
transceiver[grm].send(b'Hallo')
|
||||
while True:
|
||||
try:
|
||||
for grm in [" neo-f9p", "zed-x20p"]:
|
||||
transceiver[grm].send(b'Hallo')
|
||||
except ValueError:
|
||||
break
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
# Stop thread
|
||||
@@ -180,3 +197,5 @@ if __name__ == "__main__":
|
||||
|
||||
# code never reached
|
||||
mc.disconnect()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user