fixes, resend_subscriptions
authorthomasv <thomasv@gitorious>
Tue, 10 Sep 2013 17:59:58 +0000 (19:59 +0200)
committerthomasv <thomasv@gitorious>
Tue, 10 Sep 2013 17:59:58 +0000 (19:59 +0200)
gui/network_dialog.py
lib/blockchain.py
lib/interface.py
lib/network.py

index d725253..3a65f6c 100644 (file)
@@ -44,10 +44,18 @@ class NetworkDialog(QDialog):
         self.protocol = None
 
         if parent:
-            if interface.is_connected:
-                status = _("Connected to")+" %s"%(interface.host) + "\n%d "%(network.blockchain.height)+_("blocks")
+            n = len(network.interfaces)
+            if n:
+                status = _("Connected to %d servers")%n + ", %d "%(network.blockchain.height) + _("blocks")
             else:
                 status = _("Not connected")
+
+            if interface.is_connected:
+                status += "\n" + _("History server:") + " %s"%(interface.host) 
+            else:
+                status += "\n" + _("History server is disconnected")
+                
+
             server = interface.server
         else:
             import random
@@ -229,6 +237,6 @@ class NetworkDialog(QDialog):
 
         self.config.set_key("proxy", proxy, True)
         self.config.set_key("server", server, True)
-        self.interface.set_server(server, proxy)
+        self.network.set_server(server, proxy)
         self.config.set_key('auto_cycle', self.autocycle_cb.isChecked(), True)
         return True
index 5c2c13f..0aac442 100644 (file)
@@ -93,8 +93,8 @@ class Blockchain(threading.Thread):
                 self.network.trigger_callback('updated')
 
             h = self.servers_height.get(self.network.interface.server)
-            if h is not None and h < height:
-                print "server is lagging", height - i.network.interface.height
+            if h is not None and h < height - 1:
+                print "server is lagging", height, h
                 self.network.interface.stop()
 
 
index 46bc53a..de60e5c 100644 (file)
@@ -129,7 +129,7 @@ class Interface(threading.Thread):
                 with self.lock: 
                     method, params, channel = self.unanswered_requests.pop(msg_id)
                 response_queue = self.responses[channel]
-                response_queue.put({'method':method, 'params':params, 'error':error, 'id':msg_id})
+                response_queue.put((self,{'method':method, 'params':params, 'error':error, 'id':msg_id}))
 
             return
 
index c7e09b3..768df8d 100644 (file)
@@ -78,6 +78,15 @@ class Network(threading.Thread):
             return self.interface.is_connected
 
 
+    def set_server(self, server, proxy):
+        subscriptions = self.interface.subscriptions
+        self.default_server = server
+        self.start_interface(server)
+        self.interface = self.interfaces[server]
+        self.resend_subscriptions(subscriptions)
+        self.trigger_callback('disconnecting') # for actively disconnecting
+
+
     def run(self):
         self.blockchain.start()
 
@@ -122,10 +131,10 @@ class Network(threading.Thread):
         with self.lock: return self.running
 
 
-    def resend_subscriptions(self):
-        for channel, messages in self.subscriptions.items():
+    def resend_subscriptions(self, subscriptions):
+        for channel, messages in subscriptions.items():
             if messages:
-                self.send(messages, channel)
+                self.interface.send(messages, channel)