Refactor of API interfaces
[src/app-framework-binder.git] / src / afb-apis.h
index 9127e6d..0254466 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016 IoT.bzh
+ * Copyright (C) 2016, 2017 "IoT.bzh"
  * Author: José Bollo <jose.bollo@iot.bzh>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * limitations under the License.
  */
 
+#pragma once
 
-extern int afb_apis_count();
+struct afb_req;
+struct afb_context;
+struct afb_xreq;
 
-extern void afb_apis_free_context(int apiidx, void *context);
+struct afb_api_itf
+{
+       void (*call)(void *closure, struct afb_xreq *xreq);
+       int (*service_start)(void *closure, int share_session, int onneed);
+       void (*update_hooks)(void *closure);
+       int (*get_verbosity)(void *closure);
+       void (*set_verbosity)(void *closure, int level);
+};
 
-extern int afb_apis_add_plugin(const char *path);
+struct afb_api
+{
+       void *closure;
+       struct afb_api_itf *itf;
+};
 
-extern int afb_apis_add_directory(const char *path);
+extern void afb_apis_set_timeout(int to);
 
-extern int afb_apis_add_path(const char *path);
+extern int afb_apis_is_valid_api_name(const char *name);
 
-extern int afb_apis_add_pathset(const char *pathset);
+extern int afb_apis_add(const char *name, struct afb_api api);
 
-struct afb_req;
-struct AFB_clientCtx;
-extern int afb_apis_handle(struct afb_req req, struct AFB_clientCtx *context, const char *api, size_t lenapi, const char *verb, size_t lenverb);
+extern int afb_apis_start_all_services(int share_session);
+extern int afb_apis_start_service(const char *name, int share_session, int onneed);
+
+extern void afb_apis_call(struct afb_xreq *xreq);
+extern void afb_apis_call_direct(struct afb_xreq *xreq);
+
+extern void afb_apis_update_hooks(const char *api);
+
+extern void afb_apis_set_verbosity(const char *api, int level);
+extern int afb_apis_get_verbosity(const char *api);
+extern const char **afb_apis_get_names();