aboutsummaryrefslogtreecommitdiffstats
path: root/include/afb
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-06-02 09:13:06 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2017-06-02 17:05:37 +0200
commit8a30491d5e60239a338e485311a29c43398726e9 (patch)
tree890cc1512ca1804f6857d6b1519a35ca308a1f11 /include/afb
parentc6380108964e71f533d8c672bb9c217020a95e8d (diff)
Add 'afb_daemon_require_api'
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 <jose.bollo@iot.bzh>
Diffstat (limited to 'include/afb')
-rw-r--r--include/afb/afb-binding.h2
-rw-r--r--include/afb/afb-daemon-common.h1
-rw-r--r--include/afb/afb-daemon-v1.h10
-rw-r--r--include/afb/afb-daemon-v2.h9
4 files changed, 22 insertions, 0 deletions
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);
+}