Add verbs for closing and setting LOA
authorJosé Bollo <jose.bollo@iot.bzh>
Sun, 22 May 2016 05:54:10 +0000 (07:54 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Sun, 22 May 2016 05:54:10 +0000 (07:54 +0200)
These new verbs are now available to plugins.
LOA is the level-of-authorisation.

The usage of these new verbs must be protected
by a mechanism that is still to be done.

Change-Id: Ia591fb6bf9cd16956dc95658c5ba3a24ee4380be
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
include/afb/afb-req-itf.h
src/afb-hreq.c
src/afb-ws-json1.c

index a3ff9fe..6984d0f 100644 (file)
@@ -40,6 +40,9 @@ struct afb_req_itf {
 
        void (*addref)(void *closure);
        void (*unref)(void *closure);
+
+       void (*session_close)(void *closure);
+       void (*session_set_LOA)(void *closure, unsigned level);
 };
 
 struct afb_req {
@@ -123,6 +126,16 @@ static inline void afb_req_unref(struct afb_req req)
        return req.itf->unref(req.closure);
 }
 
+static inline void afb_req_session_close(struct afb_req req)
+{
+       return req.itf->session_close(req.closure);
+}
+
+static inline void afb_req_session_set_LOA(struct afb_req req, unsigned level)
+{
+       return req.itf->session_set_LOA(req.closure, level);
+}
+
 #include <stdlib.h>
 
 static inline struct afb_req *afb_req_store(struct afb_req req)
index b1f300d..6cd1e22 100644 (file)
@@ -82,7 +82,9 @@ static const struct afb_req_itf afb_hreq_itf = {
        .context_get = (void*)afb_context_get,
        .context_set = (void*)afb_context_set,
        .addref = (void*)afb_hreq_addref,
-       .unref = (void*)afb_hreq_unref
+       .unref = (void*)afb_hreq_unref,
+       .session_close = (void*)afb_context_close,
+       .session_set_LOA = (void*)afb_context_change_loa
 };
 
 static struct hreq_data *get_data(struct afb_hreq *hreq, const char *key, int create)
index 78b8c21..351a5d0 100644 (file)
@@ -169,7 +169,9 @@ static const struct afb_req_itf wsreq_itf = {
        .context_get = (void*)afb_context_get,
        .context_set = (void*)afb_context_set,
        .addref = (void*)wsreq_addref,
-       .unref = (void*)wsreq_unref
+       .unref = (void*)wsreq_unref,
+       .session_close = (void*)afb_context_close,
+       .session_set_LOA = (void*)afb_context_change_loa
 };
 
 static int aws_wsreq_parse(struct afb_wsreq *r, char *text, size_t size)