aboutsummaryrefslogtreecommitdiffstats
path: root/include/afb/afb-binding-v2.h
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-05-04 16:21:18 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2017-05-04 16:34:04 +0200
commit4be084408c6d3d7b7f90a2493829c8ce0cebb397 (patch)
tree55e15ee647417a2be87a6f98d474b3b1fddb886c /include/afb/afb-binding-v2.h
parent8a5d14c58817b7ee03f8e22ba734fdd8cc2bc780 (diff)
Prepare bindings version 2
Change-Id: Ic9e417d9a36f5da08883c3ded127d8350ff893cc Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'include/afb/afb-binding-v2.h')
-rw-r--r--include/afb/afb-binding-v2.h38
1 files changed, 31 insertions, 7 deletions
diff --git a/include/afb/afb-binding-v2.h b/include/afb/afb-binding-v2.h
index 97956411..17adb02e 100644
--- a/include/afb/afb-binding-v2.h
+++ b/include/afb/afb-binding-v2.h
@@ -17,17 +17,23 @@
#pragma once
-struct afb_binding_interface;
+#include <stdint.h>
+
struct afb_service;
+struct afb_daemon;
+struct afb_binding_v2;
+
struct json_object;
/*
- * A binding V2 MUST have an exported symbol of name
+ * A binding V2 MUST have two exported symbols of name:
*
- * afbBindingV2
+ * - afbBindingV2
+ * - afbBindingV2verbosity
*
*/
extern const struct afb_binding_v2 afbBindingV2;
+extern int afbBindingV2verbosity;
/*
* Description of one verb of the API provided by the binding
@@ -38,7 +44,7 @@ struct afb_verb_v2
const char *verb; /* name of the verb */
void (*callback)(struct afb_req req); /* callback function implementing the verb */
const char * permissions; /* required permissions */
- enum afb_session_v1 session; /* authorisation and session requirements of the verb */
+ uint32_t session; /* authorisation and session requirements of the verb */
};
/*
@@ -49,8 +55,26 @@ struct afb_binding_v2
const char *api; /* api name for the binding */
const char *specification; /* textual specification of the binding */
const struct afb_verb_v2 *verbs; /* array of descriptions of verbs terminated by a NULL name */
- int (*init)(const struct afb_binding_interface *interface);
- int (*start)(const struct afb_binding_interface *interface, struct afb_service service);
- void (*onevent)(const char *event, struct json_object *object);
+ int (*init)(struct afb_daemon daemon);
+ int (*start)(struct afb_service service);
+ void (*onevent)(struct afb_service service, const char *event, struct json_object *object);
};
+/*
+ * Macros for logging messages
+ */
+#if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO)
+# if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_DETAILS)
+# define AFB_ERROR_V2(daemon,...) do{if(afbBindingV2verbosity>=0)afb_daemon_verbose(daemon,3,__FILE__,__LINE__,__VA_ARGS__);}while(0)
+# define AFB_WARNING_V2(daemon,...) do{if(afbBindingV2verbosity>=1)afb_daemon_verbose(daemon,4,__FILE__,__LINE__,__VA_ARGS__);}while(0)
+# define AFB_NOTICE_V2(daemon,...) do{if(afbBindingV2verbosity>=1)afb_daemon_verbose(daemon,5,__FILE__,__LINE__,__VA_ARGS__);}while(0)
+# define AFB_INFO_V2(daemon,...) do{if(afbBindingV2verbosity>=2)afb_daemon_verbose(daemon,6,__FILE__,__LINE__,__VA_ARGS__);}while(0)
+# define AFB_DEBUG_V2(daemon,...) do{if(afbBindingV2verbosity>=3)afb_daemon_verbose(daemon,7,__FILE__,__LINE__,__VA_ARGS__);}while(0)
+# else
+# define AFB_ERROR_V2(daemon,...) do{if(afbBindingV2verbosity>=0)afb_daemon_verbose(daemon,3,NULL,0,__VA_ARGS__);}while(0)
+# define AFB_WARNING_V2(daemon,...) do{if(afbBindingV2verbosity>=1)afb_daemon_verbose(daemon,4,NULL,0,__VA_ARGS__);}while(0)
+# define AFB_NOTICE_V2(daemon,...) do{if(afbBindingV2verbosity>=1)afb_daemon_verbose(daemon,5,NULL,0,__VA_ARGS__);}while(0)
+# define AFB_INFO_V2(daemon,...) do{if(afbBindingV2verbosity>=2)afb_daemon_verbose(daemon,6,NULL,0,__VA_ARGS__);}while(0)
+# define AFB_DEBUG_V2(daemon,...) do{if(afbBindingV2verbosity>=3)afb_daemon_verbose(daemon,7,NULL,0,__VA_ARGS__);}while(0)
+# endif
+#endif