Graceful Shutdown & De-Reg. Handling
This commit is contained in:
parent
ee96c6752e
commit
d6c22c4721
23
dmrlink.py
23
dmrlink.py
@ -21,6 +21,7 @@ import csv
|
|||||||
import os
|
import os
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
|
import signal
|
||||||
|
|
||||||
from logging.config import dictConfig
|
from logging.config import dictConfig
|
||||||
from hmac import new as hmac_new
|
from hmac import new as hmac_new
|
||||||
@ -579,6 +580,19 @@ def print_master(_network):
|
|||||||
print('\t\tStatus: {}, KeepAlives Sent: {}, KeepAlives Outstanding: {}, KeepAlives Missed: {}' .format(_master['STATUS']['CONNECTED'], _master['STATUS']['KEEP_ALIVES_SENT'], _master['STATUS']['KEEP_ALIVES_OUTSTANDING'], _master['STATUS']['KEEP_ALIVES_MISSED']))
|
print('\t\tStatus: {}, KeepAlives Sent: {}, KeepAlives Outstanding: {}, KeepAlives Missed: {}' .format(_master['STATUS']['CONNECTED'], _master['STATUS']['KEEP_ALIVES_SENT'], _master['STATUS']['KEEP_ALIVES_OUTSTANDING'], _master['STATUS']['KEEP_ALIVES_MISSED']))
|
||||||
print('\t\t KeepAlives Received: {}, Last KeepAlive Received at: {}' .format(_master['STATUS']['KEEP_ALIVES_RECEIVED'], _master['STATUS']['KEEP_ALIVE_RX_TIME']))
|
print('\t\t KeepAlives Received: {}, Last KeepAlive Received at: {}' .format(_master['STATUS']['KEEP_ALIVES_RECEIVED'], _master['STATUS']['KEEP_ALIVE_RX_TIME']))
|
||||||
|
|
||||||
|
# Shut ourselves down gracefully with the IPSC peers.
|
||||||
|
#
|
||||||
|
def handler(_signal, _frame):
|
||||||
|
logger.info('*** DMRLINK IS TERMINATING WITH SIGNAL %s ***', str(_signal))
|
||||||
|
|
||||||
|
for network in networks:
|
||||||
|
this_ipsc = networks[network]
|
||||||
|
logger.info('De-Registering from IPSC %s', network)
|
||||||
|
de_reg_req_pkt = this_ipsc.hashed_packet(this_ipsc._local['AUTH_KEY'], this_ipsc.DE_REG_REQ_PKT)
|
||||||
|
send_to_ipsc(network, de_reg_req_pkt)
|
||||||
|
|
||||||
|
reactor.stop()
|
||||||
|
|
||||||
#************************************************
|
#************************************************
|
||||||
#******** ***********
|
#******** ***********
|
||||||
#******** IPSC Network 'Engine' ***********
|
#******** IPSC Network 'Engine' ***********
|
||||||
@ -644,6 +658,10 @@ class IPSC(DatagramProtocol):
|
|||||||
self.MASTER_ALIVE_REPLY_PKT = (MASTER_ALIVE_REPLY + self._local_id + self.TS_FLAGS + IPSC_VER)
|
self.MASTER_ALIVE_REPLY_PKT = (MASTER_ALIVE_REPLY + self._local_id + self.TS_FLAGS + IPSC_VER)
|
||||||
self.PEER_LIST_REPLY_PKT = (PEER_LIST_REPLY + self._local_id)
|
self.PEER_LIST_REPLY_PKT = (PEER_LIST_REPLY + self._local_id)
|
||||||
#
|
#
|
||||||
|
# General Link Maintenance Packets
|
||||||
|
self.DE_REG_REQ_PKT = (DE_REG_REQ + self._local_id)
|
||||||
|
self.DE_REG_REPLY_PKT = (DE_REG_REPLY + self._local_id)
|
||||||
|
#
|
||||||
logger.info('(%s) IPSC Instance Created', self._network)
|
logger.info('(%s) IPSC Instance Created', self._network)
|
||||||
else:
|
else:
|
||||||
# If we didn't get called correctly, log it!
|
# If we didn't get called correctly, log it!
|
||||||
@ -1193,6 +1211,11 @@ class IPSC(DatagramProtocol):
|
|||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
logger.info('DMRlink \'dmrlink.py\' (c) 2013, 2014 N0MJS & the K0USY Group - SYSTEM STARTING...')
|
logger.info('DMRlink \'dmrlink.py\' (c) 2013, 2014 N0MJS & the K0USY Group - SYSTEM STARTING...')
|
||||||
|
|
||||||
|
# Set signal handers so that we can gracefully exit if need be
|
||||||
|
for sig in [signal.SIGTERM, signal.SIGINT, signal.SIGQUIT]:
|
||||||
|
signal.signal(sig, handler)
|
||||||
|
|
||||||
networks = {}
|
networks = {}
|
||||||
for ipsc_network in NETWORK:
|
for ipsc_network in NETWORK:
|
||||||
if NETWORK[ipsc_network]['LOCAL']['ENABLED']:
|
if NETWORK[ipsc_network]['LOCAL']['ENABLED']:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user