aboutsummaryrefslogtreecommitdiffstats
path: root/src/afb-apiset.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/afb-apiset.c')
-rw-r--r--src/afb-apiset.c26
1 files changed, 16 insertions, 10 deletions
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 {