URI: 
       tre-use pending_servers to avoid sending unnecessary notifications - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit ecdb90b0b7640eff019a5f42ceb088e9b72626ca
   DIR parent 5d1e229f05b66964f802e53cdc772a645e2c7e05
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Mon,  4 Aug 2014 11:29:58 +0200
       
       re-use pending_servers to avoid sending unnecessary notifications
       
       Diffstat:
         M lib/network.py                      |      24 ++++++++++++++++--------
       
       1 file changed, 16 insertions(+), 8 deletions(-)
       ---
   DIR diff --git a/lib/network.py b/lib/network.py
       t@@ -101,6 +101,7 @@ class Network(threading.Thread):
                self.disconnected_time = time.time()
        
                self.recent_servers = self.config.get('recent_servers',[]) # successful connections
       +        self.pending_servers = set()
        
                self.banner = ''
                self.interface = None
       t@@ -164,7 +165,7 @@ class Network(threading.Thread):
                choice_list = []
                l = filter_protocol(self.get_servers(), self.protocol)
                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
                    else:
                        choice_list.append(s)
       t@@ -199,8 +200,7 @@ class Network(threading.Thread):
                if server in self.interfaces.keys():
                    return
                i = interface.Interface(server, self.config)
       -        self.interfaces[i.server] = i
       -        self.notify('interfaces')
       +        self.pending_servers.add(server)
                i.start(self.queue)
                return i
        
       t@@ -256,8 +256,7 @@ class Network(threading.Thread):
                        self.switch_to_interface(i)
                        break
                    else:
       -                self.interfaces.pop(i.server)
       -                self.notify('interfaces')
       +                self.remove_interface(i)
        
            def switch_to_interface(self, interface):
                server = interface.server
       t@@ -306,6 +305,14 @@ class Network(threading.Thread):
                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):
                if self.is_connected():
                    if self.server_is_lagging():
       t@@ -385,8 +392,11 @@ class Network(threading.Thread):
                        continue
        
                    # 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:
       +                self.add_interface(i)
                        self.add_recent_server(i)
                        i.send_request({'method':'blockchain.headers.subscribe','params':[]})
                        if i == self.interface:
       t@@ -396,12 +406,10 @@ class Network(threading.Thread):
                    else:
                        self.disconnected_servers.add(i.server)
                        if i.server in self.interfaces:
       -                    self.interfaces.pop(i.server)
       -                    self.notify('interfaces')
       +                    self.remove_interface(i)
                        if i.server in self.heights:
                            self.heights.pop(i.server)
                        if i == self.interface:
       -                    #self.interface = None
                            self.set_status('disconnected')
        
                    if not self.interface.is_connected and self.config.get('auto_cycle'):