From 550b36945f2e9eae1fc4b822ea9a00a2a866eb83 Mon Sep 17 00:00:00 2001
From: José Bollo <jose.bollo@iot.bzh>
Date: Mon, 4 Sep 2017 18:17:55 +0200
Subject: Allow renaming of API
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

The function afb_daemon_rename_api allows to rename
an API during the preinit phase.

Change-Id: I35477ba99d35b1dc51a7cacf8e55c3f02d86d7b4
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
---
 include/afb/afb-binding.h       |  2 ++
 include/afb/afb-daemon-common.h |  1 +
 include/afb/afb-daemon-v1.h     | 11 +++++++++++
 include/afb/afb-daemon-v2.h     | 11 +++++++++++
 4 files changed, 25 insertions(+)

(limited to 'include')

diff --git a/include/afb/afb-binding.h b/include/afb/afb-binding.h
index 1c4ec3f2..f8e38c49 100644
--- a/include/afb/afb-binding.h
+++ b/include/afb/afb-binding.h
@@ -161,6 +161,7 @@ typedef struct afb_service_itf          afb_service_itf;
 #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_daemon_rename_api		afb_daemon_rename_api_v1
 
 #define afb_service_call		afb_service_call_v1
 #define afb_service_call_sync		afb_service_call_sync_v1
@@ -216,6 +217,7 @@ typedef struct afb_service_itf          afb_service_itf;
 #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_daemon_rename_api		afb_daemon_rename_api_v2
 
 #define afb_service_call		afb_service_call_v2
 #define afb_service_call_sync		afb_service_call_sync_v2
diff --git a/include/afb/afb-daemon-common.h b/include/afb/afb-daemon-common.h
index 1d576b9a..5faf5758 100644
--- a/include/afb/afb-daemon-common.h
+++ b/include/afb/afb-daemon-common.h
@@ -42,6 +42,7 @@ struct afb_daemon_itf
 	void (*vverbose_v2)(void*closure, int level, const char *file, int line, const char * func, const char *fmt, va_list args);
 	struct afb_req (*unstore_req)(void*closure, struct afb_stored_req *sreq);
 	int (*require_api)(void*closure, const char *name, int initialized);
+	int (*rename_api)(void*closure, const char *name);
 };
 
 /*
diff --git a/include/afb/afb-daemon-v1.h b/include/afb/afb-daemon-v1.h
index 81cdb124..7fc2c235 100644
--- a/include/afb/afb-daemon-v1.h
+++ b/include/afb/afb-daemon-v1.h
@@ -180,3 +180,14 @@ static inline int afb_daemon_require_api_v1(struct afb_daemon daemon, const char
 {
 	return daemon.itf->require_api(daemon.closure, name, initialized);
 }
+
+/*
+ * Set the name of the API to 'name'.
+ * Calling this function is only allowed within preinit.
+ * Returns 0 in case of success or -1 in case of error.
+ */
+static inline int afb_daemon_rename_api_v1(struct afb_daemon daemon, const char *name)
+{
+	return daemon.itf->rename_api(daemon.closure, name);
+}
+
diff --git a/include/afb/afb-daemon-v2.h b/include/afb/afb-daemon-v2.h
index 7ef085b0..1451a097 100644
--- a/include/afb/afb-daemon-v2.h
+++ b/include/afb/afb-daemon-v2.h
@@ -157,3 +157,14 @@ static inline int afb_daemon_require_api_v2(const char *name, int initialized)
 {
 	return afb_get_daemon_v2().itf->require_api(afb_get_daemon_v2().closure, name, initialized);
 }
+
+/*
+ * Set the name of the API to 'name'.
+ * Calling this function is only allowed within preinit.
+ * Returns 0 in case of success or -1 in case of error.
+ */
+static inline int afb_daemon_rename_api_v2(const char *name)
+{
+	return afb_get_daemon_v2().itf->rename_api(afb_get_daemon_v2().closure, name);
+}
+
-- 
cgit