aboutsummaryrefslogtreecommitdiffstats
path: root/include/afb/afb-binding-v2.h
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/afb/afb-binding-v2.h
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/afb/afb-binding-v2.h')
-rw-r--r--include/afb/afb-binding-v2.h56
1 files changed, 56 insertions, 0 deletions
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);
+};
+