diff options
author | José Bollo <jose.bollo@iot.bzh> | 2017-04-21 18:59:02 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2017-04-21 18:59:02 +0200 |
commit | f047a6ebb105106fd3b293681298a9fa86418b23 (patch) | |
tree | 03576632713c3c8d3834f33fcc785809ab5bfb0e /src/afb-apiset.c | |
parent | 7e358069a9e076a25bb31211e5b7386c231f0f8d (diff) |
apiset: improvements
Change-Id: I476ab17bb5c48dbb3cd6c215687989203407549f
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-apiset.c')
-rw-r--r-- | src/afb-apiset.c | 54 |
1 files changed, 45 insertions, 9 deletions
diff --git a/src/afb-apiset.c b/src/afb-apiset.c index c17881ed..63c28fe7 100644 --- a/src/afb-apiset.c +++ b/src/afb-apiset.c @@ -146,6 +146,15 @@ struct afb_apiset *afb_apiset_create(const char *name, int timeout) return set; } +/** + * the name of the apiset + * @param set the api set + * @return the name of the set + */ +const char *afb_apiset_name(struct afb_apiset *set) +{ + return set->name; +} /** * Get the API timeout of the set @@ -246,7 +255,6 @@ void afb_apiset_default_api_drop(struct afb_apiset *set) * @param api the api * @returns 0 in case of success or -1 in case * of error with errno set: - * - EINVAL if name isn't valid * - EEXIST if name already registered * - ENOMEM when out of memory */ @@ -255,13 +263,6 @@ int afb_apiset_add(struct afb_apiset *set, const char *name, struct afb_api api) struct api_desc *apis; int i, c; - /* Checks the api name */ - if (!afb_api_is_valid_name(name)) { - ERROR("invalid api name forbidden (name is '%s')", name); - errno = EINVAL; - goto error; - } - /* check previously existing plugin */ for (i = 0 ; i < set->count ; i++) { c = strcasecmp(set->apis[i].name, name); @@ -337,6 +338,27 @@ int afb_apiset_del(struct afb_apiset *set, const char *name) * @param api the structure where to store data about the API of name * @return 0 in case of success or -1 in case of error */ +int afb_apiset_lookup(struct afb_apiset *set, const char *name, struct afb_api *api) +{ + const struct api_desc *i; + + i = search(set, name); + if (i) { + *api = i->api; + return 0; + } + + errno = ENOENT; + return -1; +} + +/** + * Get from the 'set' the API of 'name' in 'api' with fallback to subset or default api + * @param set the set of API + * @param name the name of the API to get + * @param api the structure where to store data about the API of name + * @return 0 in case of success or -1 in case of error + */ int afb_apiset_get(struct afb_apiset *set, const char *name, struct afb_api *api) { const struct api_desc *i; @@ -478,7 +500,7 @@ int afb_apiset_get_verbosity(struct afb_apiset *set, const char *name) return -1; } if (!i->api.itf->get_verbosity) - return 0; + return verbosity; return i->api.itf->get_verbosity(i->api.closure); } @@ -513,3 +535,17 @@ const char **afb_apiset_get_names(struct afb_apiset *set) return names; } +/** + * Enumerate the api names to a callback. + * @param set the api set + * @param callback the function to call for each name + * @param closure the closure for the callback + */ +void afb_apiset_enum(struct afb_apiset *set, void (*callback)(struct afb_apiset *set, const char *name, void *closure), void *closure) +{ + int i; + + for (i = 0 ; i < set->count ; i++) + callback(set, set->apis[i].name, closure); +} + |