Provide efficient store/unstore for afb_req
[src/app-framework-binder.git] / src / afb-xreq.h
index fc3e225..4230774 100644 (file)
@@ -27,6 +27,8 @@ struct afb_apiset;
 struct afb_event;
 struct afb_verb_desc_v1;
 struct afb_verb_v2;
+struct afb_req;
+struct afb_stored_req;
 
 struct afb_xreq_query_itf {
        struct json_object *(*json)(struct afb_xreq *xreq);
@@ -85,6 +87,7 @@ struct afb_xreq
 #define CONTAINER_OF_XREQ(type,x) CONTAINER_OF(type,xreq,x)
 
 /* req wrappers for xreq */
+extern struct afb_req afb_xreq_unstore(struct afb_stored_req *sreq);
 extern void afb_xreq_addref(struct afb_xreq *xreq);
 extern void afb_xreq_unref(struct afb_xreq *xreq);
 
@@ -118,6 +121,19 @@ extern void afb_xreq_unhooked_subcall(
                void (*callback)(void*, int, struct json_object*),
                void *cb_closure);
 
+extern int afb_xreq_unhooked_subcall_sync(
+               struct afb_xreq *xreq,
+               const char *api,
+               const char *verb,
+               struct json_object *args,
+               struct json_object **result);
+extern int afb_xreq_subcall_sync(
+               struct afb_xreq *xreq,
+               const char *api,
+               const char *verb,
+               struct json_object *args,
+               struct json_object **result);
+
 /* initialisation and processing of xreq */
 extern void afb_xreq_init(struct afb_xreq *xreq, const struct afb_xreq_query_itf *queryitf);