diff options
author | Jose Bollo <jose.bollo@iot.bzh> | 2019-01-02 17:38:00 +0100 |
---|---|---|
committer | Jose Bollo <jose.bollo@iot.bzh> | 2019-03-11 13:36:28 +0100 |
commit | 3abc75dfa35fa36c0f5f55cd4aed4d443620b3a9 (patch) | |
tree | 62886316daf9c0124ef629493c872ad97aff9977 /include/afb/c++/binding-wrap.hpp | |
parent | e9a9f95aab36dd73037024e5450d2ecd6da959af (diff) |
c++: Add verb initialisation for C++
This new constexpr initialisation method accepts
a callback receiving a afb::req instead of a
afb_req_t.
Change-Id: I752e670b5545a9d7956987984e725b468196a6e9
Signed-off-by: Jose Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'include/afb/c++/binding-wrap.hpp')
-rw-r--r-- | include/afb/c++/binding-wrap.hpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/include/afb/c++/binding-wrap.hpp b/include/afb/c++/binding-wrap.hpp index 0a5a5e25..8eddc58b 100644 --- a/include/afb/c++/binding-wrap.hpp +++ b/include/afb/c++/binding-wrap.hpp @@ -571,6 +571,40 @@ constexpr afb_verb_t verb( return r; } +#if AFB_BINDING_VERSION >= 3 +void __afb__verb__cb__for__global__(afb_req_t r) +{ + void *vcbdata; + void (*callback)(req); + + vcbdata = afb_req_get_vcbdata(r); + callback = reinterpret_cast<void(*)(req)>(vcbdata); + callback(req(r)); +} + +constexpr afb_verb_t verb( + const char *name, + void (&callback)(req), + const char *info = nullptr, + uint16_t session = 0, + const afb_auth *auth = nullptr + , + bool glob = false, + void *vcbdata = nullptr +) +{ + return verb( + name, + __afb__verb__cb__for__global__, + info, + session, + auth, + glob, + reinterpret_cast<void*>(&callback) + ); +} +#endif + constexpr afb_verb_t verbend() { afb_verb_t r = verb(nullptr, nullptr); |