summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorJosé Bollo <jose.bollo@iot.bzh>2017-03-30 19:02:06 +0200
committerJosé Bollo <jose.bollo@iot.bzh>2017-03-30 19:02:06 +0200
commitc9ba2ce49808a19a4ef982280a46256797b830ae (patch)
tree8e62a2bd8276a80642c2b2a5e2f52d6961fdc3de /include
parentc710a0da4ebcc126275c42a0387ff85b2557e3ae (diff)
Start to implement the bindings V2
More work has to be done for merging common code. Change-Id: I72b01901f978854843967c12bfcb3cc59cc10310 Signed-off-by: José Bollo <jose.bollo@iot.bzh>
Diffstat (limited to 'include')
-rw-r--r--include/afb/afb-binding-v1.h47
-rw-r--r--include/afb/afb-binding-v2.h56
-rw-r--r--include/afb/afb-binding.h22
-rw-r--r--include/afb/afb-service-itf-v1.h47
-rw-r--r--include/afb/afb-service-itf.h2
5 files changed, 105 insertions, 69 deletions
diff --git a/include/afb/afb-binding-v1.h b/include/afb/afb-binding-v1.h
index 4fbe8f9b..6281dd8a 100644
--- a/include/afb/afb-binding-v1.h
+++ b/include/afb/afb-binding-v1.h
@@ -18,6 +18,8 @@
#pragma once
struct afb_binding_interface;
+struct json_object;
+struct afb_service;
/*
* Function for registering the binding
@@ -45,6 +47,31 @@ struct afb_binding_interface;
extern const struct afb_binding *afbBindingV1Register (const struct afb_binding_interface *interface);
/*
+ * When a binding have an exported implementation of the
+ * function 'afbBindingV1ServiceInit', defined below,
+ * the framework calls it for initialising the service after
+ * registration of all bindings.
+ *
+ * The object 'service' should be recorded. It has functions that
+ * allows the binding to call features with its own personality.
+ *
+ * The function should return 0 in case of success or, else, should return
+ * a negative value.
+ */
+extern int afbBindingV1ServiceInit(struct afb_service service);
+
+/*
+ * When a binding have an implementation of the function 'afbBindingV1ServiceEvent',
+ * defined below, the framework calls that function for any broadcasted event or for
+ * events that the service subscribed to in its name.
+ *
+ * It receive the 'event' name and its related data in 'object' (be aware that 'object'
+ * might be NULL).
+ */
+extern void afbBindingV1ServiceEvent(const char *event, struct json_object *object);
+
+
+/*
* Enum for Session/Token/Assurance middleware.
* This enumeration is valid for bindings of type 1
*/
@@ -107,3 +134,23 @@ struct afb_binding_desc_v1
const struct afb_verb_desc_v1 *verbs; /* array of descriptions of verbs terminated by a NULL name */
};
+/*
+ * Definition of the type+versions of the binding.
+ * The definition uses hashes.
+ */
+enum afb_binding_type
+{
+ AFB_BINDING_VERSION_1 = 123456789
+};
+
+/*
+ * Description of a binding
+ */
+struct afb_binding
+{
+ enum afb_binding_type type; /* type of the binding */
+ union {
+ struct afb_binding_desc_v1 v1; /* description of the binding of type 1 */
+ };
+};
+
diff --git a/include/afb/afb-binding-v2.h b/include/afb/afb-binding-v2.h
new file mode 100644
index 00000000..f0806a7a
--- /dev/null
+++ b/include/afb/afb-binding-v2.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2016, 2017 "IoT.bzh"
+ * Author: José Bollo <jose.bollo@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+struct afb_binding_interface;
+struct afb_service;
+struct json_object;
+
+/*
+ * A binding V2 MUST have an exported symbol of name
+ *
+ * afbBindingV2
+ *
+ */
+extern const struct afb_binding_v2 afbBindingV2;
+
+/*
+ * Description of one verb of the API provided by the binding
+ * This enumeration is valid for bindings of type version 2
+ */
+struct afb_verb_v2
+{
+ const char *verb; /* name of the verb */
+ void (*callback)(struct afb_req req); /* callback function implementing the verb */
+ const char * const *permissions; /* required permissions */
+ enum afb_session_v1 session; /* authorisation and session requirements of the verb */
+};
+
+/*
+ * Description of the bindings of type version 2
+ */
+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);
+};
+
diff --git a/include/afb/afb-binding.h b/include/afb/afb-binding.h
index 8df08ded..c8f96a39 100644
--- a/include/afb/afb-binding.h
+++ b/include/afb/afb-binding.h
@@ -38,27 +38,9 @@
#include "afb-event-itf.h"
#include "afb-req-itf.h"
+#include "afb-service-itf.h"
#include "afb-binding-v1.h"
-
-/*
- * Definition of the type+versions of the binding.
- * The definition uses hashes.
- */
-enum afb_binding_type
-{
- AFB_BINDING_VERSION_1 = 123456789 /* version 1 */
-};
-
-/*
- * Description of a binding
- */
-struct afb_binding
-{
- enum afb_binding_type type; /* type of the binding */
- union {
- struct afb_binding_desc_v1 v1; /* description of the binding of type 1 */
- };
-};
+#include "afb-binding-v2.h"
/*
* config mode
diff --git a/include/afb/afb-service-itf-v1.h b/include/afb/afb-service-itf-v1.h
deleted file mode 100644
index 9319cd3b..00000000
--- a/include/afb/afb-service-itf-v1.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2016, 2017 "IoT.bzh"
- * Author: José Bollo <jose.bollo@iot.bzh>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#pragma once
-
-struct json_object;
-struct afb_service;
-
-/*
- * When a binding have an exported implementation of the
- * function 'afbBindingV1ServiceInit', defined below,
- * the framework calls it for initialising the service after
- * registration of all bindings.
- *
- * The object 'service' should be recorded. It has functions that
- * allows the binding to call features with its own personality.
- *
- * The function should return 0 in case of success or, else, should return
- * a negative value.
- */
-extern int afbBindingV1ServiceInit(struct afb_service service);
-
-/*
- * When a binding have an implementation of the function 'afbBindingV1ServiceEvent',
- * defined below, the framework calls that function for any broadcasted event or for
- * events that the service subscribed to in its name.
- *
- * It receive the 'event' name and its related data in 'object' (be aware that 'object'
- * might be NULL).
- */
-extern void afbBindingV1ServiceEvent(const char *event, struct json_object *object);
-
-
diff --git a/include/afb/afb-service-itf.h b/include/afb/afb-service-itf.h
index 321fa5ac..e2e61dc8 100644
--- a/include/afb/afb-service-itf.h
+++ b/include/afb/afb-service-itf.h
@@ -43,8 +43,6 @@ struct afb_service
void *closure;
};
-#include "afb-service-itf-v1.h"
-
/**
* Calls the 'verb' of the 'api' with the arguments 'args' and 'verb' in the name of the binding.
* The result of the call is delivered to the 'callback' function with the 'callback_closure'.