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