X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=4dc6cb81b2a6dd6f60f3eea0948aa431b5025965;hb=03f863dd080d32f71c4a0755c02e23c72e4cb342;hp=32b12dd308f5ec2d33d97c674c0dba79a0051b89;hpb=a05138e6bf1257b0e7b1ad90c974fb9e12f1d040;p=src%2Fapp-framework-binder.git diff --git a/src/main.c b/src/main.c index 32b12dd3..4dc6cb81 100644 --- a/src/main.c +++ b/src/main.c @@ -446,9 +446,9 @@ struct startup_req struct afb_session *session; }; -static void startup_call_reply(void *closure, int iserror, struct json_object *obj) +static void startup_call_reply(struct afb_xreq *xreq, int iserror, struct json_object *obj) { - struct startup_req *sreq = closure; + struct startup_req *sreq = CONTAINER_OF_XREQ(struct startup_req, xreq); if (!iserror) NOTICE("startup call %s returned %s", sreq->current->value, json_object_get_string(obj)); @@ -460,9 +460,9 @@ static void startup_call_reply(void *closure, int iserror, struct json_object *o static void startup_call_current(struct startup_req *sreq); -static void startup_call_unref(void *closure) +static void startup_call_unref(struct afb_xreq *xreq) { - struct startup_req *sreq = closure; + struct startup_req *sreq = CONTAINER_OF_XREQ(struct startup_req, xreq); free(sreq->api); free(sreq->verb); @@ -493,16 +493,14 @@ static void startup_call_current(struct startup_req *sreq) json = strchr(verb, ':'); if (json) { memset(&sreq->xreq, 0, sizeof sreq->xreq); + afb_xreq_init(&sreq->xreq, &startup_xreq_itf); afb_context_init(&sreq->xreq.context, sreq->session, NULL); sreq->xreq.context.validated = 1; sreq->api = strndup(api, verb - api); - sreq->xreq.api = sreq->api; sreq->verb = strndup(verb + 1, json - verb - 1); + sreq->xreq.api = sreq->api; sreq->xreq.verb = sreq->verb; sreq->xreq.json = json_tokener_parse(json + 1); - sreq->xreq.refcount = 1; - sreq->xreq.query = sreq; - sreq->xreq.queryitf = &startup_xreq_itf; if (sreq->api && sreq->verb && sreq->xreq.json) { afb_apis_call(&sreq->xreq); afb_xreq_unref(&sreq->xreq);