import time
import weakref
-from twisted.internet import task
+from p2pool.util import deferral
class Node(object):
def __init__(self, contents, prev=None, next=None):
self.d = dict() # key -> node, value
self_ref = weakref.ref(self, lambda _: expire_loop.stop() if expire_loop.running else None)
- self._expire_loop = expire_loop = task.LoopingCall(lambda: self_ref().expire())
+ self._expire_loop = expire_loop = deferral.RobustLoopingCall(lambda: self_ref().expire())
expire_loop.start(1)
def stop(self):
def itervalues(self):
for node, value in self.d.itervalues():
yield value
-
-if __name__ == '__main__':
- x = ExpiringDict(5)
- print x
-
- time.sleep(1)
-
- x[1] = 2
- print 'x[1] = 2'
- print x
-
- time.sleep(1)
-
- x[1] = 3
- print 'x[1] = 3'
- print x
-
- time.sleep(5)
-
- print x