aboutsummaryrefslogtreecommitdiffstats
path: root/src/afb-xreq.c
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-04-04 14:52:40 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2017-04-04 14:52:40 +0200
commitede362db9ea82b85a531849c21582f1692bf0d4d (patch)
treecc2b274cc66cf959613230d447d03233b3c29033 /src/afb-xreq.c
parent66c2dc7476c4a5105bcf233dd4e08f0466e7f3dc (diff)
Add synchronous subcalls
Synchronous subcalls are more easy for writing simple applications with sequential logic. Change-Id: I76a0231a64a6db8270014cd2a64284e1b0fc16ec Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-xreq.c')
-rw-r--r--src/afb-xreq.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/afb-xreq.c b/src/afb-xreq.c
index c8fd94e9..15ebae05 100644
--- a/src/afb-xreq.c
+++ b/src/afb-xreq.c
@@ -62,6 +62,13 @@ static void xreq_subcall_cb(
void (*callback)(void*, int, struct json_object*),
void *cb_closure);
+static int xreq_subcallsync_cb(
+ void *closure,
+ const char *api,
+ const char *verb,
+ struct json_object *args,
+ struct json_object **result);
+
const struct afb_req_itf xreq_itf = {
.json = xreq_json_cb,
.get = xreq_get_cb,
@@ -77,7 +84,8 @@ const struct afb_req_itf xreq_itf = {
.session_set_LOA = xreq_session_set_LOA_cb,
.subscribe = xreq_subscribe_cb,
.unsubscribe = xreq_unsubscribe_cb,
- .subcall = xreq_subcall_cb
+ .subcall = xreq_subcall_cb,
+ .subcallsync = xreq_subcallsync_cb
};
static struct json_object *xreq_json_cb(void *closure)
@@ -248,6 +256,17 @@ static void xreq_subcall_cb(void *closure, const char *api, const char *verb, st
afb_subcall(xreq, api, verb, args, callback, cb_closure);
}
+static int xreq_subcallsync_cb(void *closure, const char *api, const char *verb, struct json_object *args, struct json_object **result)
+{
+ struct afb_xreq *xreq = closure;
+/*
+ if (xreq->queryitf->subcallsync)
+ xreq->queryitf->subcall(xreq->query, api, verb, args, callback, cb_closure);
+ else
+*/
+ return afb_subcall_sync(xreq, api, verb, args, result);
+}
+
void afb_xreq_success_f(struct afb_xreq *xreq, struct json_object *obj, const char *info, ...)
{
char *message;