z = len(dict['values'])
v = filter(None, map(x, dict['values']))
if(len(v)):
- reactor.callLater(0, self.callback, v)
+ reactor.callLater(0, self.callback, self.target, v)
self.schedule()
## get value
if self.outstanding == 0:
## all done, didn't find it!!
self.finished=1
- reactor.callLater(0, self.callback,[])
+ reactor.callLater(0, self.callback, self.target, [])
## get value
def goWithNodes(self, nodes, found=None):
self.stored.append(t)
if len(self.stored) >= self.config['STORE_REDUNDANCY']:
self.finished=1
- self.callback(self.stored)
+ self.callback(self.target, self.value, self.stored)
else:
if not len(self.stored) + self.outstanding >= self.config['STORE_REDUNDANCY']:
self.schedule()
except IndexError:
if self.outstanding == 0:
self.finished = 1
- self.callback(self.stored)
+ self.callback(self.target, self.value, self.stored)
else:
if not node.id == self.table.node.id:
self.outstanding += 1
def __init__(self, store, config):
self.store = store
self.config = config
- reactor.callLater(self.config['KEINITIAL_DELAY'], self.doExpire)
+ self.next_expire = reactor.callLater(self.config['KEINITIAL_DELAY'], self.doExpire)
def doExpire(self):
- self.cut = "%0.6f" % (time() - self.config['KE_AGE'])
- self._expire()
-
- def _expire(self):
- c = self.store.cursor()
- s = "delete from kv where time < '%s';" % self.cut
- c.execute(s)
- reactor.callLater(self.config['KE_DELAY'], self.doExpire)
+ self.store.expireValues(time() - self.config['KE_AGE'])
+ self.next_expire = reactor.callLater(self.config['KE_DELAY'], self.doExpire)
+
+ def shutdown(self):
+ try:
+ self.next_expire.cancel()
+ except:
+ pass