tmove interfaces maintenance to its own function - electrum - Electrum Bitcoin wallet
HTML git clone https://git.parazyd.org/electrum
DIR Log
DIR Files
DIR Refs
DIR Submodules
---
DIR commit a1d1999545e0d9b2c741ed8411c1bcb6c52f00d1
DIR parent 30519e7024cef22d98838b1b9c2543b06e43b116
HTML Author: ThomasV <thomasv@gitorious>
Date: Fri, 8 May 2015 20:13:18 +0200
move interfaces maintenance to its own function
Diffstat:
M lib/network.py | 56 +++++++++++++++++--------------
1 file changed, 30 insertions(+), 26 deletions(-)
---
DIR diff --git a/lib/network.py b/lib/network.py
t@@ -170,6 +170,9 @@ class Network(util.DaemonThread):
self.connection_status = 'connecting'
self.requests_queue = Queue.Queue()
self.set_proxy(deserialize_proxy(self.config.get('proxy')))
+ # retry times
+ self.server_retry_time = time.time()
+ self.nodes_retry_time = time.time()
def read_recent_servers(self):
if not self.config.path:
t@@ -464,37 +467,38 @@ class Network(util.DaemonThread):
self.requests_queue.put(request)
time.sleep(0.1)
+ def check_interfaces(self):
+ now = time.time()
+ if len(self.interfaces) + len(self.pending_servers) < self.num_server:
+ self.start_random_interface()
+ if not self.interfaces:
+ if now - self.nodes_retry_time > NODES_RETRY_INTERVAL:
+ self.print_error('network: retrying connections')
+ self.disconnected_servers = set([])
+ self.nodes_retry_time = now
+ if not self.interface.is_connected():
+ if self.config.get('auto_cycle'):
+ if self.interfaces:
+ self.switch_to_random_interface()
+ else:
+ if self.default_server in self.interfaces.keys():
+ self.switch_to_interface(self.interfaces[self.default_server])
+ else:
+ if self.default_server in self.disconnected_servers:
+ if now - self.server_retry_time > SERVER_RETRY_INTERVAL:
+ self.disconnected_servers.remove(self.default_server)
+ self.server_retry_time = now
+ else:
+ if self.default_server not in self.pending_servers:
+ self.print_error("forcing reconnection")
+ self.interface = self.start_interface(self.default_server)
+
def run(self):
- server_retry_time = time.time()
- nodes_retry_time = time.time()
while self.is_running():
+ self.check_interfaces()
try:
i, response = self.queue.get(timeout=0.1)
except Queue.Empty:
- now = time.time()
- if len(self.interfaces) + len(self.pending_servers) < self.num_server:
- self.start_random_interface()
- if not self.interfaces:
- if now - nodes_retry_time > NODES_RETRY_INTERVAL:
- self.print_error('network: retrying connections')
- self.disconnected_servers = set([])
- nodes_retry_time = now
- if not self.interface.is_connected():
- if self.config.get('auto_cycle'):
- if self.interfaces:
- self.switch_to_random_interface()
- else:
- if self.default_server in self.interfaces.keys():
- self.switch_to_interface(self.interfaces[self.default_server])
- else:
- if self.default_server in self.disconnected_servers:
- if now - server_retry_time > SERVER_RETRY_INTERVAL:
- self.disconnected_servers.remove(self.default_server)
- server_retry_time = now
- else:
- if self.default_server not in self.pending_servers:
- self.print_error("forcing reconnection")
- self.interface = self.start_interface(self.default_server)
continue
if response is not None: