switch_to_interface() to start interface if not connected

Two places currently have switch-to-or-start-interface logic.
Put that common logic into switch_to_interface().
This commit is contained in:
Neil Booth 2015-05-22 16:22:24 +09:00
parent 16b23a1832
commit 31ffd4b381
1 changed files with 17 additions and 25 deletions

View File

@ -359,15 +359,18 @@ class Network(util.DaemonThread):
self.switch_to_interface(server) self.switch_to_interface(server)
def switch_to_interface(self, server): def switch_to_interface(self, server):
'''Switch to server as our interface, it must be in self.interfaces''' '''Switch to server as our interface. If not already connected, start a
assert server in self.interfaces connection - we will switch on receipt of the connection notification'''
self.print_error("switching to", server)
self.interface = self.interfaces[server]
self.default_server = server self.default_server = server
self.send_subscriptions() if server in self.interfaces:
self.set_status('connected') self.print_error("switching to", server)
self.notify('updated') self.interface = self.interfaces[server]
self.send_subscriptions()
self.set_status('connected')
self.notify('updated')
else:
self.print_error("starting %s; will switch once connected" % server)
self.start_interface(server)
def stop_interface(self): def stop_interface(self):
self.interface.stop() self.interface.stop()
@ -384,13 +387,7 @@ class Network(util.DaemonThread):
if self.is_connected(): if self.is_connected():
self.stop_interface() self.stop_interface()
# start interface self.switch_to_interface(server)
self.default_server = server
if server in self.interfaces.keys():
self.switch_to_interface(server)
else:
self.start_interface(server)
def add_recent_server(self, i): def add_recent_server(self, i):
@ -500,17 +497,12 @@ class Network(util.DaemonThread):
if self.config.get('auto_cycle'): if self.config.get('auto_cycle'):
self.switch_to_random_interface() self.switch_to_random_interface()
else: else:
if self.default_server in self.interfaces.keys(): if self.default_server in self.disconnected_servers:
self.switch_to_interface(self.default_server) if now - self.server_retry_time > SERVER_RETRY_INTERVAL:
self.disconnected_servers.remove(self.default_server)
self.server_retry_time = now
else: else:
if self.default_server in self.disconnected_servers: self.switch_to_interface(self.default_server)
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.start_interface(self.default_server)
def run(self): def run(self):
while self.is_running(): while self.is_running():