From 8b91c244142fbaf600a79bfc4812ba4ba47a68fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 11 Sep 2023 11:52:55 -0400 Subject: [PATCH] python: make callbacks noexcept --- include/opendht/callbacks.h | 12 ++++++------ python/opendht.pyx | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/include/opendht/callbacks.h b/include/opendht/callbacks.h index 7cdcc632..829b7876 100644 --- a/include/opendht/callbacks.h +++ b/include/opendht/callbacks.h @@ -176,12 +176,12 @@ using CertificateStoreQuery = std::function<std::vector<std::shared_ptr<crypto:: using DoneCallback = std::function<void(bool success, const std::vector<std::shared_ptr<Node>>& nodes)>; using DoneCallbackSimple = std::function<void(bool success)>; -typedef bool (*GetCallbackRaw)(std::shared_ptr<Value>, void *user_data) noexcept(false); -typedef bool (*ValueCallbackRaw)(std::shared_ptr<Value>, bool expired, void *user_data) noexcept(false); -typedef void (*DoneCallbackRaw)(bool, std::vector<std::shared_ptr<Node>>*, void *user_data) noexcept(false); -typedef void (*ShutdownCallbackRaw)(void *user_data) noexcept(false); -typedef void (*DoneCallbackSimpleRaw)(bool, void *user_data) noexcept(false); -typedef bool (*FilterRaw)(const Value&, void *user_data) noexcept(false); +typedef bool (*GetCallbackRaw)(std::shared_ptr<Value>, void *user_data); +typedef bool (*ValueCallbackRaw)(std::shared_ptr<Value>, bool expired, void *user_data); +typedef void (*DoneCallbackRaw)(bool, std::vector<std::shared_ptr<Node>>*, void *user_data); +typedef void (*ShutdownCallbackRaw)(void *user_data); +typedef void (*DoneCallbackSimpleRaw)(bool, void *user_data); +typedef bool (*FilterRaw)(const Value&, void *user_data); OPENDHT_PUBLIC GetCallbackSimple bindGetCb(GetCallbackRaw raw_cb, void* user_data); diff --git a/python/opendht.pyx b/python/opendht.pyx index a1f0118b..1dcfc773 100644 --- a/python/opendht.pyx +++ b/python/opendht.pyx @@ -42,7 +42,7 @@ cimport opendht_cpp as cpp import threading -cdef inline void lookup_callback(cpp.vector[cpp.shared_ptr[cpp.IndexValue]]* values, cpp.Prefix* p, void *user_data) with gil: +cdef inline void lookup_callback(cpp.vector[cpp.shared_ptr[cpp.IndexValue]]* values, cpp.Prefix* p, void *user_data) noexcept with gil: cbs = <object>user_data if 'lookup' in cbs and cbs['lookup']: vals = [] @@ -52,13 +52,13 @@ cdef inline void lookup_callback(cpp.vector[cpp.shared_ptr[cpp.IndexValue]]* val vals.append(v) cbs['lookup'](vals, p.toString()) -cdef inline void shutdown_callback(void* user_data) with gil: +cdef inline void shutdown_callback(void* user_data) noexcept with gil: cbs = <object>user_data if 'shutdown' in cbs and cbs['shutdown']: cbs['shutdown']() ref.Py_DECREF(cbs) -cdef inline bool get_callback(shared_ptr[cpp.Value] value, void *user_data) with gil: +cdef inline bool get_callback(shared_ptr[cpp.Value] value, void *user_data) noexcept with gil: cbs = <object>user_data cb = cbs['get'] f = cbs['filter'] if 'filter' in cbs else None @@ -66,7 +66,7 @@ cdef inline bool get_callback(shared_ptr[cpp.Value] value, void *user_data) with pv._value = value return cb(pv) if not f or f(pv) else True -cdef inline bool value_callback(shared_ptr[cpp.Value] value, bool expired, void *user_data) with gil: +cdef inline bool value_callback(shared_ptr[cpp.Value] value, bool expired, void *user_data) noexcept with gil: cbs = <object>user_data cb = cbs['valcb'] f = cbs['filter'] if 'filter' in cbs else None @@ -74,7 +74,7 @@ cdef inline bool value_callback(shared_ptr[cpp.Value] value, bool expired, void pv._value = value return cb(pv, expired) if not f or f(pv) else True -cdef inline void done_callback(bool done, cpp.vector[shared_ptr[cpp.Node]]* nodes, void *user_data) with gil: +cdef inline void done_callback(bool done, cpp.vector[shared_ptr[cpp.Node]]* nodes, void *user_data) noexcept with gil: node_ids = [] for n in deref(nodes): h = NodeEntry() @@ -86,7 +86,7 @@ cdef inline void done_callback(bool done, cpp.vector[shared_ptr[cpp.Node]]* node cbs['done'](done, node_ids) ref.Py_DECREF(cbs) -cdef inline void done_callback_simple(bool done, void *user_data) with gil: +cdef inline void done_callback_simple(bool done, void *user_data) noexcept with gil: cbs = <object>user_data if 'done' in cbs and cbs['done']: cbs['done'](done) -- GitLab