*
* Functions of bindings of afb-daemon are accessible by authorized clients
* through the apis module of afb-daemon.
- *
- * A binding is a shared library. This shared library must have at least one
- * exported symbol for being registered in afb-daemon.
- *
*/
#define AFB_BINDING_LOWER_VERSION 1
#define AFB_BINDING_UPPER_VERSION 2
-#define AFB_BINDING_DEFAULT_VERSION 1
#ifndef AFB_BINDING_VERSION
-#define AFB_BINDING_VERSION AFB_BINDING_DEFAULT_VERSION
+#define AFB_BINDING_VERSION 1
+#pragma GCC warning "\
+\n\
+\n\
+ AFB_BINDING_VERSION should be defined before including <afb/afb-binding.h>\n\
+ AFB_BINDING_VERSION defines the version of binding that you use.\n\
+ Currently, known versions are 1 or 2.\n\
+ Setting now AFB_BINDING_VERSION to 1 (version 1 by default)\n\
+ NOTE THAT VERSION 2 IS NOW RECOMMENDED!\n\
+ Consider to add one of the following define before including <afb/afb-binding.h>:\n\
+\n\
+ #define AFB_BINDING_VERSION 1\n\
+ #define AFB_BINDING_VERSION 2\n\
+\n\
+ Note that in some case it will enforce you to include <stdio.h>\n\
+"
+#include <stdio.h> /* old version side effect */
+#else
+# if AFB_BINDING_VERSION == 1
+# pragma GCC warning "Using binding version 1, consider to switch to version 2"
+# endif
#endif
#if AFB_BINDING_VERSION != 0
typedef struct afb_event afb_event;
typedef struct afb_arg afb_arg;
typedef struct afb_req afb_req;
+typedef struct afb_stored_req afb_stored_req;
typedef struct afb_service afb_service;
#if 0
# if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO)
-# define ERROR AFB_ERROR_V1
-# define WARNING AFB_WARNING_V1
-# define NOTICE AFB_NOTICE_V1
-# define INFO AFB_INFO_V1
-# define DEBUG AFB_DEBUG_V1
+# define AFB_ERROR AFB_ERROR_V1
+# define AFB_WARNING AFB_WARNING_V1
+# define AFB_NOTICE AFB_NOTICE_V1
+# define AFB_INFO AFB_INFO_V1
+# define AFB_DEBUG AFB_DEBUG_V1
-# define REQ_ERROR AFB_REQ_ERROR_V1
-# define REQ_WARNING AFB_REQ_WARNING_V1
-# define REQ_NOTICE AFB_REQ_NOTICE_V1
-# define REQ_INFO AFB_REQ_INFO_V1
-# define REQ_DEBUG AFB_REQ_DEBUG_V1
+# define AFB_REQ_ERROR AFB_REQ_ERROR_V1
+# define AFB_REQ_WARNING AFB_REQ_WARNING_V1
+# define AFB_REQ_NOTICE AFB_REQ_NOTICE_V1
+# define AFB_REQ_INFO AFB_REQ_INFO_V1
+# define AFB_REQ_DEBUG AFB_REQ_DEBUG_V1
# endif
#define afb_daemon_rootdir_get_fd afb_daemon_rootdir_get_fd_v1
#define afb_daemon_rootdir_open_locale afb_daemon_rootdir_open_locale_v1
#define afb_daemon_queue_job afb_daemon_queue_job_v1
+#define afb_daemon_require_api afb_daemon_require_api_v1
#define afb_service_call afb_service_call_v1
#define afb_service_call_sync afb_service_call_sync_v1
+#define afb_req_store afb_req_store_v1
+#define afb_req_unstore afb_req_unstore_v1
+
#endif
/***************************************************************************************************/
#if AFB_BINDING_VERSION == 2
# define afb_binding afb_binding_v2
+# define afb_get_verbosity afb_get_verbosity_v2
+# define afb_get_daemon afb_get_daemon_v2
+# define afb_get_service afb_get_service_v2
+
# define AFB_SESSION_NONE AFB_SESSION_NONE_V2
# define AFB_SESSION_CLOSE AFB_SESSION_CLOSE_V2
# if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO)
-# define ERROR AFB_ERROR_V2
-# define WARNING AFB_WARNING_V2
-# define NOTICE AFB_NOTICE_V2
-# define INFO AFB_INFO_V2
-# define DEBUG AFB_DEBUG_V2
+# define AFB_ERROR AFB_ERROR_V2
+# define AFB_WARNING AFB_WARNING_V2
+# define AFB_NOTICE AFB_NOTICE_V2
+# define AFB_INFO AFB_INFO_V2
+# define AFB_DEBUG AFB_DEBUG_V2
-# define REQ_ERROR AFB_REQ_ERROR_V2
-# define REQ_WARNING AFB_REQ_WARNING_V2
-# define REQ_NOTICE AFB_REQ_NOTICE_V2
-# define REQ_INFO AFB_REQ_INFO_V2
-# define REQ_DEBUG AFB_REQ_DEBUG_V2
+# define AFB_REQ_ERROR AFB_REQ_ERROR_V2
+# define AFB_REQ_WARNING AFB_REQ_WARNING_V2
+# define AFB_REQ_NOTICE AFB_REQ_NOTICE_V2
+# define AFB_REQ_INFO AFB_REQ_INFO_V2
+# define AFB_REQ_DEBUG AFB_REQ_DEBUG_V2
# endif
#define afb_daemon_rootdir_get_fd afb_daemon_rootdir_get_fd_v2
#define afb_daemon_rootdir_open_locale afb_daemon_rootdir_open_locale_v2
#define afb_daemon_queue_job afb_daemon_queue_job_v2
+#define afb_daemon_unstore_req afb_daemon_unstore_req_v2
+#define afb_daemon_require_api afb_daemon_require_api_v2
#define afb_service_call afb_service_call_v2
#define afb_service_call_sync afb_service_call_sync_v2
+#define afb_req_store afb_req_store_v2
+#define afb_req_unstore afb_daemon_unstore_req_v2
+
+#endif
+
+/***************************************************************************************************/
+
+#if AFB_BINDING_VERSION >= 2
+
+# define afb_verbose_error() (afb_get_verbosity() >= 0)
+# define afb_verbose_warning() (afb_get_verbosity() >= 1)
+# define afb_verbose_notice() (afb_get_verbosity() >= 1)
+# define afb_verbose_info() (afb_get_verbosity() >= 2)
+# define afb_verbose_debug() (afb_get_verbosity() >= 3)
+
+#endif
+
+/***************************************************************************************************/
+
+#if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_UNPREFIX)
+# if !defined(AFB_BINDING_PRAGMA_NO_VERBOSE_MACRO)
+# define ERROR AFB_ERROR
+# define WARNING AFB_WARNING
+# define NOTICE AFB_NOTICE
+# define INFO AFB_INFO
+# define DEBUG AFB_DEBUG
+
+# define REQ_ERROR AFB_REQ_ERROR
+# define REQ_WARNING AFB_REQ_WARNING
+# define REQ_NOTICE AFB_REQ_NOTICE
+# define REQ_INFO AFB_REQ_INFO
+# define REQ_DEBUG AFB_REQ_DEBUG
+# endif
#endif