diff libervia.py @ 157:b17ec3a6a112

browser side: in case of error, retry delay is doubled at each try
author Goffi <goffi@goffi.org>
date Sat, 05 Jan 2013 16:07:33 +0100
parents 8635bc9db9bf
children 58442ed28f2b
line wrap: on
line diff
--- a/libervia.py	Sat Jan 05 16:06:33 2013 +0100
+++ b/libervia.py	Sat Jan 05 16:07:33 2013 +0100
@@ -90,11 +90,19 @@
                         ])
 
 class BridgeSignals(LiberviaJsonProxy):
+    RETRY_BASE_DELAY = 1000
+
     def __init__(self, host):
         self.host = host
+        self.retry_delay = self.RETRY_BASE_DELAY 
         LiberviaJsonProxy.__init__(self, "/json_signal_api",
                         ["getSignals"])
     
+    def onRemoteResponse(self, response, request_info):
+        self.retry_delay = self.RETRY_BASE_DELAY 
+        LiberviaJsonProxy.onRemoteResponse(self, response, request_info)
+    
+    
     def onRemoteError(self, code, errobj, request_info):
         LiberviaJsonProxy.onRemoteError(self, code, errobj, request_info) 
         #we now try to reconnect
@@ -103,7 +111,8 @@
         else:
             def _timerCb():
                 self.host.bridge_signals.call('getSignals', self.host._getSignalsCB)
-            Timer(notify=_timerCb).schedule(5000) #we wait 5 s and try again
+            Timer(notify=_timerCb).schedule(self.retry_delay)
+            self.retry_delay *= 2
 
 class SatWebFrontend:
     def onModuleLoad(self):