summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean B. Palmer <sbp@aldebaran.local>2012-01-12 14:21:49 +0000
committerSean B. Palmer <sbp@aldebaran.local>2012-01-12 14:21:49 +0000
commit25755360786dcafc798d68f147471de0bbfb1056 (patch)
tree9f4a2652d9840337e15b6b92132af757833b6579
parente3633957a9f115da07127fe97c629bb362b2af58 (diff)
downloadbot-25755360786dcafc798d68f147471de0bbfb1056.tar.gz
bot-25755360786dcafc798d68f147471de0bbfb1056.tar.bz2
bot-25755360786dcafc798d68f147471de0bbfb1056.zip
Added clsn's ping-pong code
-rwxr-xr-xmodules/startup.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/modules/startup.py b/modules/startup.py
index 6fc7fae..e650170 100755
--- a/modules/startup.py
+++ b/modules/startup.py
@@ -7,6 +7,51 @@ Licensed under the Eiffel Forum License 2.
http://inamidst.com/phenny/
"""
+import threading, time
+
+def setup(phenny):
+ # by clsn
+ phenny.data = {}
+ refresh_delay = 300.0
+
+ if hasattr(phenny.config, 'refresh_delay'):
+ try: refresh_delay = float(phenny.config.refresh_delay)
+ except: pass
+
+ def close():
+ print "Nobody PONGed our PING, restarting"
+ phenny.handle_close()
+
+ def pingloop():
+ timer = threading.Timer(refresh_delay, close, ())
+ phenny.data['startup.setup.timer'] = timer
+ phenny.data['startup.setup.timer'].start()
+ # print "PING!"
+ phenny.write(('PING', phenny.config.host))
+ phenny.data['startup.setup.pingloop'] = pingloop
+
+ def pong(phenny, input):
+ try:
+ # print "PONG!"
+ phenny.data['startup.setup.timer'].cancel()
+ time.sleep(refresh_delay + 60.0)
+ pingloop()
+ except: pass
+ pong.event = 'PONG'
+ pong.thread = True
+ pong.rule = r'.*'
+ phenny.variables['pong'] = pong
+
+ # Need to wrap handle_connect to start the loop.
+ inner_handle_connect = phenny.handle_connect
+
+ def outer_handle_connect():
+ inner_handle_connect()
+ if phenny.data.get('startup.setup.pingloop'):
+ phenny.data['startup.setup.pingloop']()
+
+ phenny.handle_connect = outer_handle_connect
+
def startup(phenny, input):
if hasattr(phenny.config, 'serverpass'):
phenny.write(('PASS', phenny.config.serverpass))