re-use pending_servers to avoid sending unnecessary notifications
This commit is contained in:
@@ -101,6 +101,7 @@ class Network(threading.Thread):
|
|||||||
self.disconnected_time = time.time()
|
self.disconnected_time = time.time()
|
||||||
|
|
||||||
self.recent_servers = self.config.get('recent_servers',[]) # successful connections
|
self.recent_servers = self.config.get('recent_servers',[]) # successful connections
|
||||||
|
self.pending_servers = set()
|
||||||
|
|
||||||
self.banner = ''
|
self.banner = ''
|
||||||
self.interface = None
|
self.interface = None
|
||||||
@@ -164,7 +165,7 @@ class Network(threading.Thread):
|
|||||||
choice_list = []
|
choice_list = []
|
||||||
l = filter_protocol(self.get_servers(), self.protocol)
|
l = filter_protocol(self.get_servers(), self.protocol)
|
||||||
for s in l:
|
for s in l:
|
||||||
if s in self.disconnected_servers or s in self.interfaces.keys():
|
if s in self.pending_servers or s in self.disconnected_servers or s in self.interfaces.keys():
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
choice_list.append(s)
|
choice_list.append(s)
|
||||||
@@ -199,8 +200,7 @@ class Network(threading.Thread):
|
|||||||
if server in self.interfaces.keys():
|
if server in self.interfaces.keys():
|
||||||
return
|
return
|
||||||
i = interface.Interface(server, self.config)
|
i = interface.Interface(server, self.config)
|
||||||
self.interfaces[i.server] = i
|
self.pending_servers.add(server)
|
||||||
self.notify('interfaces')
|
|
||||||
i.start(self.queue)
|
i.start(self.queue)
|
||||||
return i
|
return i
|
||||||
|
|
||||||
@@ -256,8 +256,7 @@ class Network(threading.Thread):
|
|||||||
self.switch_to_interface(i)
|
self.switch_to_interface(i)
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
self.interfaces.pop(i.server)
|
self.remove_interface(i)
|
||||||
self.notify('interfaces')
|
|
||||||
|
|
||||||
def switch_to_interface(self, interface):
|
def switch_to_interface(self, interface):
|
||||||
server = interface.server
|
server = interface.server
|
||||||
@@ -306,6 +305,14 @@ class Network(threading.Thread):
|
|||||||
self.config.set_key('recent_servers', self.recent_servers)
|
self.config.set_key('recent_servers', self.recent_servers)
|
||||||
|
|
||||||
|
|
||||||
|
def add_interface(self, i):
|
||||||
|
self.interfaces[i.server] = i
|
||||||
|
self.notify('interfaces')
|
||||||
|
|
||||||
|
def remove_interface(self, i):
|
||||||
|
self.interfaces.pop(i.server)
|
||||||
|
self.notify('interfaces')
|
||||||
|
|
||||||
def new_blockchain_height(self, blockchain_height, i):
|
def new_blockchain_height(self, blockchain_height, i):
|
||||||
if self.is_connected():
|
if self.is_connected():
|
||||||
if self.server_is_lagging():
|
if self.server_is_lagging():
|
||||||
@@ -385,8 +392,11 @@ class Network(threading.Thread):
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# if response is None it is a notification about the interface
|
# 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:
|
if i.is_connected:
|
||||||
|
self.add_interface(i)
|
||||||
self.add_recent_server(i)
|
self.add_recent_server(i)
|
||||||
i.send_request({'method':'blockchain.headers.subscribe','params':[]})
|
i.send_request({'method':'blockchain.headers.subscribe','params':[]})
|
||||||
if i == self.interface:
|
if i == self.interface:
|
||||||
@@ -396,12 +406,10 @@ class Network(threading.Thread):
|
|||||||
else:
|
else:
|
||||||
self.disconnected_servers.add(i.server)
|
self.disconnected_servers.add(i.server)
|
||||||
if i.server in self.interfaces:
|
if i.server in self.interfaces:
|
||||||
self.interfaces.pop(i.server)
|
self.remove_interface(i)
|
||||||
self.notify('interfaces')
|
|
||||||
if i.server in self.heights:
|
if i.server in self.heights:
|
||||||
self.heights.pop(i.server)
|
self.heights.pop(i.server)
|
||||||
if i == self.interface:
|
if i == self.interface:
|
||||||
#self.interface = None
|
|
||||||
self.set_status('disconnected')
|
self.set_status('disconnected')
|
||||||
|
|
||||||
if not self.interface.is_connected and self.config.get('auto_cycle'):
|
if not self.interface.is_connected and self.config.get('auto_cycle'):
|
||||||
|
|||||||
Reference in New Issue
Block a user