From 8a30491d5e60239a338e485311a29c43398726e9 Mon Sep 17 00:00:00 2001 From: José Bollo Date: Fri, 2 Jun 2017 09:13:06 +0200 Subject: Add 'afb_daemon_require_api' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This solution is at this time the best one to allow asynchronous calls within initialisation of bindings. Change-Id: I21ba3a74b4e93eec238a11dd51bc6b58c483308d Signed-off-by: José Bollo --- include/afb/afb-binding.h | 2 ++ include/afb/afb-daemon-common.h | 1 + include/afb/afb-daemon-v1.h | 10 ++++++++++ include/afb/afb-daemon-v2.h | 9 +++++++++ 4 files changed, 22 insertions(+) (limited to 'include/afb') diff --git a/include/afb/afb-binding.h b/include/afb/afb-binding.h index 706ca813..ae700f41 100644 --- a/include/afb/afb-binding.h +++ b/include/afb/afb-binding.h @@ -163,6 +163,7 @@ typedef struct afb_service_itf afb_service_itf; #define afb_daemon_rootdir_get_fd afb_daemon_rootdir_get_fd_v1 #define afb_daemon_rootdir_open_locale afb_daemon_rootdir_open_locale_v1 #define afb_daemon_queue_job afb_daemon_queue_job_v1 +#define afb_daemon_require_api afb_daemon_require_api_v1 #define afb_service_call afb_service_call_v1 #define afb_service_call_sync afb_service_call_sync_v1 @@ -217,6 +218,7 @@ typedef struct afb_service_itf afb_service_itf; #define afb_daemon_rootdir_open_locale afb_daemon_rootdir_open_locale_v2 #define afb_daemon_queue_job afb_daemon_queue_job_v2 #define afb_daemon_unstore_req afb_daemon_unstore_req_v2 +#define afb_daemon_require_api afb_daemon_require_api_v2 #define afb_service_call afb_service_call_v2 #define afb_service_call_sync afb_service_call_sync_v2 diff --git a/include/afb/afb-daemon-common.h b/include/afb/afb-daemon-common.h index d3d1b3d3..1d576b9a 100644 --- a/include/afb/afb-daemon-common.h +++ b/include/afb/afb-daemon-common.h @@ -41,6 +41,7 @@ struct afb_daemon_itf int (*queue_job)(void *closure, void (*callback)(int signum, void *arg), void *argument, void *group, int timeout); void (*vverbose_v2)(void*closure, int level, const char *file, int line, const char * func, const char *fmt, va_list args); struct afb_req (*unstore_req)(void*closure, struct afb_stored_req *sreq); + int (*require_api)(void*closure, const char *name, int initialized); }; /* diff --git a/include/afb/afb-daemon-v1.h b/include/afb/afb-daemon-v1.h index 256c5fda..8f5ed2f9 100644 --- a/include/afb/afb-daemon-v1.h +++ b/include/afb/afb-daemon-v1.h @@ -163,3 +163,13 @@ static inline int afb_daemon_queue_job_v1(struct afb_daemon daemon, void (*callb { return daemon.itf->queue_job(daemon.closure, callback, argument, group, timeout); } + +/* + * Tells that it requires the API of "name" to exist + * and if 'initialized' is not null to be initialized. + * Returns 0 in case of success or -1 in case of error. + */ +static inline int afb_daemon_require_api_v1(struct afb_daemon daemon, const char *name, int initialized) +{ + return daemon.itf->require_api(daemon.closure, name, initialized); +} diff --git a/include/afb/afb-daemon-v2.h b/include/afb/afb-daemon-v2.h index 4c4c656d..481d3dec 100644 --- a/include/afb/afb-daemon-v2.h +++ b/include/afb/afb-daemon-v2.h @@ -141,3 +141,12 @@ static inline struct afb_req afb_daemon_unstore_req_v2(struct afb_stored_req *sr return afb_get_daemon_v2().itf->unstore_req(afb_get_daemon_v2().closure, sreq); } +/* + * Tells that it requires the API of "name" to exist + * and if 'initialized' is not null to be initialized. + * Returns 0 in case of success or -1 in case of error. + */ +static inline int afb_daemon_require_api_v2(const char *name, int initialized) +{ + return afb_get_daemon_v2().itf->require_api(afb_get_daemon_v2().closure, name, initialized); +} -- cgit 1.2.3-korg