From ab71e5a59e9e71b378d72c6d8ec6dd0c3ebd0041 Mon Sep 17 00:00:00 2001 From: Adrien Beraud Date: Sat, 30 Aug 2025 19:30:20 -0400 Subject: [PATCH] python: add support for putEncrypted with PkId --- python/opendht.pyx | 22 ++++++++++++++++++++++ python/opendht_cpp.pxd | 1 + 2 files changed, 23 insertions(+) diff --git a/python/opendht.pyx b/python/opendht.pyx index d2e32364..d88d3216 100644 --- a/python/opendht.pyx +++ b/python/opendht.pyx @@ -752,6 +752,28 @@ cdef class DhtRunner(_WithID): lock.wait() return ok + def putEncrypted(self, InfoHash key, PkId to, Value val, done_cb=None, bool permanent=False): + if done_cb: + cb_obj = {'done':done_cb} + ref.Py_INCREF(cb_obj) + self.thisptr.get().putEncrypted(key._infohash, to._pkid, val._value, cpp.bindDoneCb(done_callback, cb_obj), permanent) + else: + lock = threading.Condition() + pending = 0 + ok = False + def tmp_done(ok_ret, nodes): + nonlocal pending, ok, lock + with lock: + ok = ok_ret + pending -= 1 + lock.notify() + with lock: + pending += 1 + self.putEncrypted(key, to, val, done_cb=tmp_done, permanent=permanent) + while pending > 0: + lock.wait() + return ok + def putEncrypted(self, InfoHash key, PublicKey to, Value val, done_cb=None, bool permanent=False): if done_cb: cb_obj = {'done':done_cb} diff --git a/python/opendht_cpp.pxd b/python/opendht_cpp.pxd index 7c467c27..1ba4c3e3 100644 --- a/python/opendht_cpp.pxd +++ b/python/opendht_cpp.pxd @@ -291,6 +291,7 @@ cdef extern from "opendht/dhtrunner.h" namespace "dht": void put(InfoHash key, shared_ptr[Value] val, DoneCallback done_cb, time_point created, bool permanent) void putSigned(InfoHash key, shared_ptr[Value] val, DoneCallback done_cb, bool permanent) void putEncrypted(InfoHash key, InfoHash to, shared_ptr[Value] val, DoneCallback done_cb, bool permanent) + void putEncrypted(InfoHash key, PkId to, shared_ptr[Value] val, DoneCallback done_cb, bool permanent) void putEncrypted(InfoHash key, shared_ptr[PublicKey] to, shared_ptr[Value] val, DoneCallback done_cb, bool permanent) void cancelPut(InfoHash key, shared_ptr[Value] val) ListenToken listen(InfoHash key, ValueCallback get_cb)