]> git.mxchange.org Git - quix0rs-apt-p2p.git/blobdiff - apt_dht_Khashmir/actions.py
Upgrade pysqlite from 1.0 to 2.x (now uses sqlite3).
[quix0rs-apt-p2p.git] / apt_dht_Khashmir / actions.py
index dc743de2e7658bcb2e598bc3ccb503964b702c6c..4214e4eb932580230aa0552a5270d86eba10b124 100644 (file)
@@ -149,7 +149,7 @@ class GetValue(FindNode):
             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
@@ -178,7 +178,7 @@ class GetValue(FindNode):
         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):
@@ -210,7 +210,7 @@ class StoreValue(ActionBase):
         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()
@@ -237,7 +237,7 @@ class StoreValue(ActionBase):
             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
@@ -260,14 +260,14 @@ class KeyExpirer:
     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