Skip to content
Snippets Groups Projects
Commit 8b91c244 authored by Adrien Béraud's avatar Adrien Béraud
Browse files

python: make callbacks noexcept

parent dbebaae1
Branches
Tags v2.6.0.4
No related merge requests found
...@@ -176,12 +176,12 @@ using CertificateStoreQuery = std::function<std::vector<std::shared_ptr<crypto:: ...@@ -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 DoneCallback = std::function<void(bool success, const std::vector<std::shared_ptr<Node>>& nodes)>;
using DoneCallbackSimple = std::function<void(bool success)>; using DoneCallbackSimple = std::function<void(bool success)>;
typedef bool (*GetCallbackRaw)(std::shared_ptr<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) noexcept(false); 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) noexcept(false); typedef void (*DoneCallbackRaw)(bool, std::vector<std::shared_ptr<Node>>*, void *user_data);
typedef void (*ShutdownCallbackRaw)(void *user_data) noexcept(false); typedef void (*ShutdownCallbackRaw)(void *user_data);
typedef void (*DoneCallbackSimpleRaw)(bool, void *user_data) noexcept(false); typedef void (*DoneCallbackSimpleRaw)(bool, void *user_data);
typedef bool (*FilterRaw)(const Value&, void *user_data) noexcept(false); typedef bool (*FilterRaw)(const Value&, void *user_data);
OPENDHT_PUBLIC GetCallbackSimple bindGetCb(GetCallbackRaw raw_cb, void* user_data); OPENDHT_PUBLIC GetCallbackSimple bindGetCb(GetCallbackRaw raw_cb, void* user_data);
......
...@@ -42,7 +42,7 @@ cimport opendht_cpp as cpp ...@@ -42,7 +42,7 @@ cimport opendht_cpp as cpp
import threading 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 cbs = <object>user_data
if 'lookup' in cbs and cbs['lookup']: if 'lookup' in cbs and cbs['lookup']:
vals = [] vals = []
...@@ -52,13 +52,13 @@ cdef inline void lookup_callback(cpp.vector[cpp.shared_ptr[cpp.IndexValue]]* val ...@@ -52,13 +52,13 @@ cdef inline void lookup_callback(cpp.vector[cpp.shared_ptr[cpp.IndexValue]]* val
vals.append(v) vals.append(v)
cbs['lookup'](vals, p.toString()) 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 cbs = <object>user_data
if 'shutdown' in cbs and cbs['shutdown']: if 'shutdown' in cbs and cbs['shutdown']:
cbs['shutdown']() cbs['shutdown']()
ref.Py_DECREF(cbs) 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 cbs = <object>user_data
cb = cbs['get'] cb = cbs['get']
f = cbs['filter'] if 'filter' in cbs else None 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 ...@@ -66,7 +66,7 @@ cdef inline bool get_callback(shared_ptr[cpp.Value] value, void *user_data) with
pv._value = value pv._value = value
return cb(pv) if not f or f(pv) else True 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 cbs = <object>user_data
cb = cbs['valcb'] cb = cbs['valcb']
f = cbs['filter'] if 'filter' in cbs else None 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 ...@@ -74,7 +74,7 @@ cdef inline bool value_callback(shared_ptr[cpp.Value] value, bool expired, void
pv._value = value pv._value = value
return cb(pv, expired) if not f or f(pv) else True 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 = [] node_ids = []
for n in deref(nodes): for n in deref(nodes):
h = NodeEntry() h = NodeEntry()
...@@ -86,7 +86,7 @@ cdef inline void done_callback(bool done, cpp.vector[shared_ptr[cpp.Node]]* node ...@@ -86,7 +86,7 @@ cdef inline void done_callback(bool done, cpp.vector[shared_ptr[cpp.Node]]* node
cbs['done'](done, node_ids) cbs['done'](done, node_ids)
ref.Py_DECREF(cbs) 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 cbs = <object>user_data
if 'done' in cbs and cbs['done']: if 'done' in cbs and cbs['done']:
cbs['done'](done) cbs['done'](done)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment