Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/console/lib/purk/scripts/timeout.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/console/lib/purk/scripts/timeout.py')
-rwxr-xr-xservices/console/lib/purk/scripts/timeout.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/services/console/lib/purk/scripts/timeout.py b/services/console/lib/purk/scripts/timeout.py
new file mode 100755
index 0000000..2f0f585
--- /dev/null
+++ b/services/console/lib/purk/scripts/timeout.py
@@ -0,0 +1,45 @@
+import time
+
+import ui
+from conf import conf
+
+def setupRaw(e):
+ e.network._message_timeout = False
+
+def onSocketConnect(e):
+ timeout = conf.get("server_traffic_timeout", 120)*1000
+ e.network._message_timeout = False
+ if timeout:
+ e.network._message_timeout_source = ui.register_timer(timeout, check_timeout, e.network)
+ else:
+ e.network._message_timeout_source = None
+
+def check_timeout(network):
+ if network._message_timeout:
+ network.raw("PING %s" % network.me)
+ timeout = conf.get("server_death_timeout", 240)*1000
+ network._message_timeout_source = ui.register_timer(timeout, check_death_timeout, network)
+ return False
+ else:
+ network._message_timeout = True
+ return True # call this function again
+
+def check_death_timeout(network):
+ if network._message_timeout:
+ network.raw("QUIT :Server missing, presumed dead")
+ network.disconnect(error="The server seems to have stopped talking to us")
+ else:
+ network._message_timeout = False
+ timeout = conf.get("server_traffic_timeout", 120)*1000
+ if timeout:
+ network._message_timeout_source = ui.register_timer(timeout, check_timeout, network)
+ else:
+ network._message_timeout_source = None
+
+def onDisconnect(e):
+ try:
+ if e.network._message_timeout_source:
+ e.network._message_timeout_source.unregister()
+ e.network._message_timeout_source = None
+ except AttributeError:
+ pass