Use xreq for services
[src/app-framework-binder.git] / src / afb-xreq.c
index 5bd2068..6364018 100644 (file)
@@ -108,7 +108,7 @@ static void xreq_success_cb(void *closure, struct json_object *obj, const char *
                if (xreq->queryitf->success)
                        xreq->queryitf->success(xreq->query, obj, info);
                else
-                       xreq->queryitf->reply(xreq->query, afb_msg_json_reply_ok(info, obj, &xreq->context, NULL));
+                       xreq->queryitf->reply(xreq->query, 0, afb_msg_json_reply_ok(info, obj, &xreq->context, NULL));
        }
 }
 
@@ -122,7 +122,7 @@ static void xreq_fail_cb(void *closure, const char *status, const char *info)
                if (xreq->queryitf->fail)
                        xreq->queryitf->fail(xreq->query, status, info);
                else
-                       xreq->queryitf->reply(xreq->query, afb_msg_json_reply_error(status, info, &xreq->context, NULL));
+                       xreq->queryitf->reply(xreq->query, 1, afb_msg_json_reply_error(status, info, &xreq->context, NULL));
        }
 }
 
@@ -215,7 +215,10 @@ static int xreq_unsubscribe_cb(void *closure, struct afb_event event)
 static void xreq_subcall_cb(void *closure, const char *api, const char *verb, struct json_object *args, void (*callback)(void*, int, struct json_object*), void *cb_closure)
 {
        struct afb_xreq *xreq = closure;
-       afb_subcall(&xreq->context, api, verb, args, callback, cb_closure, (struct afb_req){ .itf = &xreq_itf, .closure = xreq });
+       if (xreq->queryitf->subcall)
+               xreq->queryitf->subcall(xreq->query, api, verb, args, callback, cb_closure);
+       else
+               afb_subcall(&xreq->context, api, verb, args, callback, cb_closure, (struct afb_req){ .itf = &xreq_itf, .closure = xreq });
 }
 
 void afb_xreq_success_f(struct afb_xreq *xreq, struct json_object *obj, const char *info, ...)