Added Peer/Master Timeout and Removal

This commit is contained in:
Cort Buffington 2013-08-01 15:09:20 -05:00
parent 244f53778a
commit ad57ed0ebb
1 changed files with 11 additions and 5 deletions

16
ipsc.py
View File

@ -277,7 +277,6 @@ class IPSC(DatagramProtocol):
master_alive_packet = hashed_packet(self._local['AUTH_KEY'], self.MASTER_ALIVE_PKT)
self.transport.write(master_alive_packet, (self._master_sock))
logger.debug('->> (%s) Master Keep-alive %s Sent To:%s', self._network, self._master_stat['KEEP_ALIVES_SENT'], self._master_sock)
self._master_stat['KEEP_ALIVES_SENT'] += 1
if (self._master_stat['KEEP_ALIVES_OUTSTANDING']) > 0:
self._master_stat['KEEP_ALIVES_MISSED'] += 1
@ -285,6 +284,9 @@ class IPSC(DatagramProtocol):
if self._master_stat['KEEP_ALIVES_OUTSTANDING'] >= self._local['MAX_MISSED']:
self._master_stat['CONNECTED'] = False
logger.error('Maximum Master Keep-Alives Missed -- De-registering the Master')
self._master_stat['KEEP_ALIVES_SENT'] += 1
self._master_stat['KEEP_ALIVES_OUTSTANDING'] += 1
else:
logger.error('->> (%s) Master in UNKOWN STATE:%s:%s', self._network, self._master_sock)
@ -308,14 +310,16 @@ class IPSC(DatagramProtocol):
self.transport.write(peer_alive_req_packet, (peer['IP'], peer['PORT']))
logger.debug('->> (%s) Peer Keep-Alive Request To:%s:%s From:%s', self._network, peer['IP'], peer['PORT'], binascii.b2a_hex(self._local_id))
peer['STATUS']['KEEP_ALIVES_SENT'] += 1
if peer['STATUS']['KEEP_ALIVES_OUTSTANDING'] > 0:
peer['STATUS']['KEEP_ALIVES_MISSED'] += 1
if peer['STATUS']['KEEP_ALIVES_OUTSTANDING'] >= self._local['MAX_MISSED']:
peer['STATUS']['CONNECTED'] = False
self._peers.remove(peer)
logger.error('Maximum Peer Keep-Alives Missed -- De-registering the Peer')
peer['STATUS']['KEEP_ALIVES_SENT'] += 1
peer['STATUS']['KEEP_ALIVES_OUTSTANDING'] += 1
logger.debug('(%s) timed loop finished', self._network) # temporary debugging to make sure this part runs
@ -362,11 +366,13 @@ class IPSC(DatagramProtocol):
return
logger.debug('<<- (%s) Master Keep-alive Reply From: %s \t@ IP: %s:%s', self._network, _dec_peerid, host, port)
#### reset keep-alive outstanding here
self._master_stat['KEEP_ALIVES_OUTSTANDING'] = 0
elif (_packettype == PEER_ALIVE_REPLY):
logger.debug('<<- (%s) Peer Keep-alive Reply From: %s \t@ IP: %s:%s', self._network, _dec_peerid, host, port)
#### reset keep-alive outstanding here
for peer in self._config['PEERS']:
if peer['RADIO_ID'] == _peerid:
peer['STATUS']['KEEP_ALIVES_OUTSTANDING'] = 0
elif (_packettype == MASTER_REG_REQ):
logger.debug('<<- (%s) Master Registration Packet Recieved', self._network)