Put interface notification handling in its own function.

This commit is contained in:
Neil Booth 2015-05-21 11:32:47 +09:00
parent 5841f943e8
commit c9a30eb5f2
1 changed files with 22 additions and 21 deletions

View File

@ -411,6 +411,25 @@ class Network(util.DaemonThread):
self.set_server(i.server)
self.notify('updated')
def process_if_notification(self, i):
if i.server in self.pending_servers:
self.pending_servers.remove(i.server)
if i.is_connected():
self.add_interface(i)
self.add_recent_server(i)
i.send_request({'method':'blockchain.headers.subscribe','params':[]})
if i == self.interface:
self.send_subscriptions()
self.set_status('connected')
else:
if i.server in self.interfaces:
self.remove_interface(i)
if i.server in self.heights:
self.heights.pop(i.server)
if i == self.interface:
self.set_status('disconnected')
self.disconnected_servers.add(i.server)
def process_response(self, i, response):
# the id comes from the daemon or the network proxy
@ -504,29 +523,11 @@ class Network(util.DaemonThread):
except Queue.Empty:
continue
if response is not None:
self.process_response(i, response)
continue
# if response is None it is a notification about the interface
if i.server in self.pending_servers:
self.pending_servers.remove(i.server)
if i.is_connected():
self.add_interface(i)
self.add_recent_server(i)
i.send_request({'method':'blockchain.headers.subscribe','params':[]})
if i == self.interface:
self.send_subscriptions()
self.set_status('connected')
if response is None:
self.process_if_notification(i)
else:
if i.server in self.interfaces:
self.remove_interface(i)
if i.server in self.heights:
self.heights.pop(i.server)
if i == self.interface:
self.set_status('disconnected')
self.disconnected_servers.add(i.server)
self.process_response(i, response)
self.print_error("stopping interfaces")
for i in self.interfaces.values():