Make addref for request return the pointer
authorJosé Bollo <jose.bollo@iot.bzh>
Fri, 22 Sep 2017 05:39:49 +0000 (07:39 +0200)
committerJosé Bollo <jose.bollo@iot.bzh>
Mon, 9 Oct 2017 12:08:32 +0000 (14:08 +0200)
Change-Id: I4286cbd9d02b406570185d265e7b925c43bbc42c
Signed-off-by: José Bollo <jose.bollo@iot.bzh>
include/afb/afb-request-itf.h
include/afb/afb-request.h
src/afb-xreq.c

index f28788e..4c62b3d 100644 (file)
@@ -94,7 +94,7 @@ struct afb_request_itf
                        void *value,
                        void (*free_value)(void*));
 
-       void (*addref)(
+       struct afb_request *(*addref)(
                        struct afb_request *request);
 
        void (*unref)(
index 052cbab..c2585fc 100644 (file)
@@ -204,9 +204,9 @@ static inline void afb_request_context_clear(struct afb_request *request)
  * This function MUST be called by asynchronous implementations
  * of verbs if no reply was sent before returning.
  */
-static inline void afb_request_addref(struct afb_request *request)
+static inline struct afb_request *afb_request_addref(struct afb_request *request)
 {
-       request->itf->addref(request);
+       return request->itf->addref(request);
 }
 
 /*
index 8ff45c4..b091bd1 100644 (file)
@@ -396,10 +396,11 @@ static void xreq_context_set_cb(struct afb_request *closure, void *value, void (
        afb_context_set(&xreq->context, value, free_value);
 }
 
-static void xreq_addref_cb(struct afb_request *closure)
+static struct afb_request *xreq_addref_cb(struct afb_request *closure)
 {
        struct afb_xreq *xreq = from_request(closure);
        afb_xreq_unhooked_addref(xreq);
+       return closure;
 }
 
 static void xreq_unref_cb(struct afb_request *closure)
@@ -610,11 +611,11 @@ static void xreq_hooked_context_set_cb(struct afb_request *closure, void *value,
        xreq_context_set_cb(closure, value, free_value);
 }
 
-static void xreq_hooked_addref_cb(struct afb_request *closure)
+static struct afb_request *xreq_hooked_addref_cb(struct afb_request *closure)
 {
        struct afb_xreq *xreq = from_request(closure);
        afb_hook_xreq_addref(xreq);
-       xreq_addref_cb(closure);
+       return xreq_addref_cb(closure);
 }
 
 static void xreq_hooked_unref_cb(struct afb_request *closure)