diff options
author | José Bollo <jose.bollo@iot.bzh> | 2018-06-19 20:16:28 +0200 |
---|---|---|
committer | José Bollo <jose.bollo@iot.bzh> | 2018-06-22 09:48:48 +0200 |
commit | 525e9eaa644ca92fad23adfbb7c3119ae8b57a30 (patch) | |
tree | 41de59627ccc937450daf4da6488efd4f4b2f3c2 /src/afb-autoset.c | |
parent | 9e15212d26916f59fae2be6d9e618ae9b75a4f40 (diff) |
Improve documentation of api v3
The documentation is improved to reflect the new version.
Tune the options
Change-Id: I894c3db3bc0c10e89db66a9a51a9ad049bb8c0c4
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'src/afb-autoset.c')
-rw-r--r-- | src/afb-autoset.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/afb-autoset.c b/src/afb-autoset.c index 102830cb..b8f8a2ef 100644 --- a/src/afb-autoset.c +++ b/src/afb-autoset.c @@ -73,6 +73,8 @@ static int add(const char *path, struct afb_apiset *declare_set, struct afb_apis return 0; } +/*******************************************************************/ + static int create_ws(const char *path, struct afb_apiset *declare_set, struct afb_apiset *call_set) { return afb_api_ws_add_client(path, declare_set, call_set, 0) >= 0; @@ -88,6 +90,8 @@ int afb_autoset_add_ws(const char *path, struct afb_apiset *declare_set, struct return add(path, declare_set, call_set, onlack_ws); } +/*******************************************************************/ + static int create_so(const char *path, struct afb_apiset *declare_set, struct afb_apiset *call_set) { return afb_api_so_add_binding(path, declare_set, call_set) >= 0; @@ -102,3 +106,38 @@ int afb_autoset_add_so(const char *path, struct afb_apiset *declare_set, struct { return add(path, declare_set, call_set, onlack_so); } + +/*******************************************************************/ + +static int create_any(const char *path, struct afb_apiset *declare_set, struct afb_apiset *call_set) +{ + int rc; + struct stat st; + + rc = stat(path, &st); + if (!rc) { + switch(st.st_mode & S_IFMT) { + case S_IFREG: + rc = afb_api_so_add_binding(path, declare_set, call_set); + break; + case S_IFSOCK: + rc = afb_api_ws_add_client(path, declare_set, call_set, 0); + break; + default: + NOTICE("Unexpected autoset entry: %s", path); + rc = -1; + break; + } + } + return rc >= 0; +} + +static int onlack_any(void *closure, struct afb_apiset *set, const char *name) +{ + return onlack(closure, set, name, create_any); +} + +int afb_autoset_add_any(const char *path, struct afb_apiset *declare_set, struct afb_apiset *call_set) +{ + return add(path, declare_set, call_set, onlack_any); +} |