X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fafb-apiset.c;h=9fddd46ca979a677f214eba5cdf364280631b059;hb=b55f3cd48507105e85894be89557787eccfbe22f;hp=0a8b3390f624ed44ea83d9be488ec805157ea187;hpb=eaf5670e9d10b5d7c066043e7563706cf1e01bd5;p=src%2Fapp-framework-binder.git diff --git a/src/afb-apiset.c b/src/afb-apiset.c index 0a8b3390..9fddd46c 100644 --- a/src/afb-apiset.c +++ b/src/afb-apiset.c @@ -28,6 +28,7 @@ #include "afb-apiset.h" #include "afb-context.h" #include "afb-xreq.h" +#include "jobs.h" #define INCR 8 /* CAUTION: must be a power of 2 */ @@ -941,20 +942,25 @@ int afb_apiset_get_logmask(struct afb_apiset *set, const char *name) return i->api.itf->get_logmask(i->api.closure); } -/** - * Get the description of the API of 'name' - * @param set the api set - * @param name the api whose description is required - * @return the description or NULL - */ -struct json_object *afb_apiset_describe(struct afb_apiset *set, const char *name) +void afb_apiset_describe(struct afb_apiset *set, const char *name, void (*describecb)(void *, struct json_object *), void *closure) { const struct api_desc *i; - - i = name ? searchrec(set, name) : NULL; - return i && i->api.itf->describe ? i->api.itf->describe(i->api.closure) : NULL; + struct json_object *r; + + r = NULL; + if (name) { + i = searchrec(set, name); + if (i) { + if (i->api.itf->describe) { + i->api.itf->describe(i->api.closure, describecb, closure); + return; + } + } + } + describecb(closure, r); } + struct get_names { union { struct {