time.sleep(1)
self.interface.connect_event.wait()
- def set_proxy(self, proxy):
+
+ def set_parameters(self, server, proxy, auto_connect):
+
+ self.config.set_key("proxy", proxy, True)
self.proxy = proxy
+ self.config.set_key('auto_cycle', auto_connect, True)
+
+ self.config.set_key("server", server, True)
+
+ if auto_connect:
+ if not self.interface:
+ self.switch_to_random_interface()
+ else:
+ if self.server_lag > 0:
+ self.interface.stop()
+ else:
+ self.set_server(server)
+
+
+ def switch_to_random_interface(self):
+ if self.interfaces:
+ self.switch_to_interface(random.choice(self.interfaces.values()))
+
+ def switch_to_interface(self, interface):
+ print_error("switching to", interface.server)
+ self.interface = interface
+ self.server_lag = self.blockchain.height - self.heights[self.interface.server]
+ self.config.set_key('server', self.interface.server, False)
+ self.send_subscriptions()
+ self.trigger_callback('connected')
+
def set_server(self, server):
- if self.default_server == server:
+ if self.default_server == server and self.interface:
return
# stop the interface in order to terminate subscriptions
self.trigger_callback('disconnecting')
# start interface
self.default_server = server
+ self.config.set_key("server", server, True)
if server in self.interfaces.keys():
- self.interface = self.interfaces[server]
- self.send_subscriptions()
+ self.switch_to_interface( self.interfaces[server] )
else:
self.start_interface(server)
self.interface = self.interfaces[server]
self.interface = None
self.trigger_callback('disconnected')
- if self.interface is None and self.config.get('auto_cycle') and self.interfaces:
- self.interface = random.choice(self.interfaces.values())
- self.config.set_key('server', self.interface.server, False)
- print_error("resending subscriptions after disconnect")
- self.send_subscriptions()
- self.trigger_callback('connected')
+ if self.interface is None and self.config.get('auto_cycle'):
+ self.switch_to_random_interface()
def on_header(self, i, r):
self.heights[i.server] = result.get('block_height')
self.blockchain.queue.put((i,result))
+ if i == self.interface:
+ self.server_lag = self.blockchain.height - self.heights[i.server]
+ if self.server_lag:
+ print "on_header: lag", self.server_lag
+ self.trigger_callback('updated')
+
+
def on_peers(self, i, r):
if not r: return
self.irc_servers = self.parse_servers(r.get('result'))