X-Git-Url: https://git.ucc.asn.au/?p=uccdoor.git;a=blobdiff_plain;f=server.py;h=06aca7bb9d112890daf5197f4af55457c79dc445;hp=5f7b5712446d22715d9e633e82dbd874cb163cce;hb=800848488857b4537d5d3dc2d8d91340fca5f279;hpb=5e211c6460db7dd20b77d147eca5a15a0df41a4b diff --git a/server.py b/server.py index 5f7b571..06aca7b 100755 --- a/server.py +++ b/server.py @@ -19,38 +19,29 @@ def check_LAT_service(servicename, retries=3): rfh, wfh = latclient.get_fh() results = {'error': retries, 'closed': retries, 'open': retries} test_string = "got wombles?" - syslog.syslog(142, "start check_LAT_service:" + servicename) # Only return after n(retries) consistent results, although not necessarily # in order. This means we poll at least (retries) and up to (retries ** 2) times. # This is mtearle's original code. No idea if it's the Right Thing. while True: - syslog.syslog(142, "running c_L_s loop:" + servicename) try: wfh.write(test_string) wfh.flush() except: results['error'] -= 1 - syslog.syslog(142, "c_L_s write error:" + servicename) if results['error'] == 0: return -1 continue - syslog.syslog(142, "c_Ls written data to " + servicename) rr, wr, er = select([rfh], [], [], 3.0) if rfh not in rr: results['open'] -= 1 if results['open'] == 0: return 1 - syslog.syslog(142, "c_L_s open: " + servicename) continue - syslog.syslog(142, "c_L_s select() succeeded: " + servicename) recv = rfh.read(len(test_string)) - syslog.syslog(142, "c_L_s read() succeeded: " + servicename) if recv <> test_string: - syslog.syslog(142, "c_L_s not the data we sent " + servicename) results['error'] -= 1 if results['error'] == 0: return -1 continue results['closed'] -= 1 - syslog.syslog(142, "c_L_s closed " + servicename) if results['closed'] == 0: return 0 class Door(dbus.service.Object): @@ -80,12 +71,13 @@ class Door(dbus.service.Object): except: newstatus = -1 - syslog.syslog(142, "status, newstatus for %s is %i, %i" % (servicename, status, newstatus)) if newstatus != self.status: - syslog.syslog(142, "status changed detected for %s" % servicename) + syslog.syslog(142, "status changed detected for %s; status: %i, newstatus: %i" % (self.service, self.status, newstatus)) self.status = newstatus # emit signal self.status_changed(newstatus) + # back off if broken + self.interval = [10,10,30][newstatus] # set up timeout again self.timeout = Timer(self.interval, self.poll)