X-Git-Url: https://git.mxchange.org/?p=quix0rs-apt-p2p.git;a=blobdiff_plain;f=khashmir.py;fp=khashmir.py;h=d773a45f8a8cd70e7dc2e7136a67d88ae5f76e1a;hp=92619fdb2e2c4627042a2df1cef0f3e93d5a33e6;hb=2c1a51b121f07cc7d629eeeb3fe728b72660649f;hpb=27eda65e62fe1e03ea36fff7cdb7f904cca0095d diff --git a/khashmir.py b/khashmir.py index 92619fd..d773a45 100644 --- a/khashmir.py +++ b/khashmir.py @@ -1,4 +1,4 @@ -## Copyright 2002-2003 Andrew Loewenstern, All Rights Reserved +## Copyright 2002-2004 Andrew Loewenstern, All Rights Reserved # see LICENSE.txt for license information from const import reactor @@ -326,7 +326,27 @@ class Khashmir(protocol.Factory): n.conn = self.udp.connectionForAddr((n.host, n.port)) self.insertNode(n, contacted=0) return {"id" : self.node.id} - + + ## multiple values per key + def krpc_store_values(self, key, values, id, _krpc_sender): + t = "%0.6f" % time.time() + c = self.store.cursor() + key = sqlite.encode(key) + for value in values: + value = sqlite.encode(value) + try: + c.execute("insert into kv values (%s, %s, %s);", key, value, t) + except sqlite.IntegrityError, reason: + # update last insert time + c.execute("update kv set time = %s where key = %s and value = %s;", (t, key, value)) + sender = {'id' : id} + sender['host'] = _krpc_sender[0] + sender['port'] = _krpc_sender[1] + n = Node().initWithDict(sender) + n.conn = self.udp.connectionForAddr((n.host, n.port)) + self.insertNode(n, contacted=0) + return {"id" : self.node.id} + def krpc_find_value(self, key, id, _krpc_sender): sender = {'id' : id} sender['host'] = _krpc_sender[0]