import threading import time from logger import Logger class Expirer(threading.Thread): def __init__(self, entries, eventLifeTime, nullAddress, dnsq): threading.Thread.__init__(self) self.entries = entries self.eventLifeTime = eventLifeTime self.nullAddress = nullAddress self.dnsq = dnsq self.setDaemon(True) def run(self): while True: Logger.log("Expiring ...") currentTime = int(time.time()) for entry in self.entries.values(): Logger.log("Checking %s" % str(entry)) if entry.lastEventTime != 0 and entry.lastEventTime + self.eventLifeTime < currentTime: Logger.log("Entry %s expired" % entry.dynid) entry.lastEventTime = 0 entry.address = self.nullAddress Logger.log("Set in DNS: %s -> %s" % (entry.name, entry.address)) try: self.dnsq.put_nowait(entry) except Queue.Full, e: Logger.log("Dns Queue overrun, drop expiry of %s" % str(entry)) time.sleep(10)