1
0

replace blockchain.height with height(), and fix server_lag issue

This commit is contained in:
ThomasV
2013-10-09 10:04:32 +02:00
parent 858be17553
commit 116b10cc11
4 changed files with 31 additions and 15 deletions

View File

@@ -198,7 +198,7 @@ class Network(threading.Thread):
self.switch_to_random_interface()
else:
if self.server_lag > 0:
self.interface.stop()
self.stop_interface()
else:
self.set_server(server)
@@ -208,18 +208,23 @@ class Network(threading.Thread):
self.switch_to_interface(random.choice(self.interfaces.values()))
def switch_to_interface(self, interface):
assert self.interface is None
server = interface.server
print_error("switching to", server)
self.interface = interface
h = self.heights.get(server)
if h:
self.server_lag = self.blockchain.height - h
self.server_lag = self.blockchain.height() - h
self.config.set_key('server', server, False)
self.default_server = server
self.send_subscriptions()
self.trigger_callback('connected')
def stop_interface(self):
self.interface.stop()
self.interface = None
def set_server(self, server):
if self.default_server == server and self.interface:
return
@@ -229,7 +234,7 @@ class Network(threading.Thread):
# stop the interface in order to terminate subscriptions
if self.interface:
self.interface.stop()
self.stop_interface()
# notify gui
self.trigger_callback('disconnecting')
@@ -255,6 +260,7 @@ class Network(threading.Thread):
def new_blockchain_height(self, blockchain_height, i):
print_error('new_blockchain_height')
if self.is_connected():
h = self.heights.get(self.interface.server)
if h:
@@ -263,6 +269,8 @@ class Network(threading.Thread):
print_error( "Server is lagging", blockchain_height, h)
if self.config.get('auto_cycle'):
self.set_server(i.server)
else:
print_error('no height for main interface')
self.trigger_callback('updated')
@@ -304,11 +312,17 @@ class Network(threading.Thread):
def on_header(self, i, r):
result = r.get('result')
if not result: return
self.heights[i.server] = result.get('block_height')
height = result.get('block_height')
self.heights[i.server] = height
# notify blockchain about the new height
self.blockchain.queue.put((i,result))
if i == self.interface:
self.server_lag = self.blockchain.height - self.heights[i.server]
self.server_lag = self.blockchain.height() - height
if self.server_lag > 1 and self.config.get('auto_cycle'):
print_error( "Server lagging, stopping interface")
self.stop_interface()
self.trigger_callback('updated')