Provide API and VERB name of requests
[src/app-framework-binder.git] / include / afb / afb-request-itf.h
index f28788e..e542442 100644 (file)
@@ -28,6 +28,7 @@ struct json_object;
 struct afb_req;
 struct afb_event;
 struct afb_eventid;
+struct afb_dynapi;
 struct afb_stored_req;
 
 /*
@@ -42,9 +43,26 @@ struct afb_arg
                                /* when the request is finalized this file is removed */
 };
 
+/*
+ * structure for the request
+ */
 struct afb_request
 {
+       /* interface for the request */
        const struct afb_request_itf *itf;
+
+       /* current dynapi (if any) */
+       struct afb_dynapi *dynapi;
+
+       /* closure associated with the callback processing the verb of the request
+        * as given at its declaration */
+       void *vcbdata;
+
+       /* the name of the called verb */
+       const char *api;
+
+       /* the name of the called verb */
+       const char *verb;
 };
 
 /*
@@ -94,7 +112,7 @@ struct afb_request_itf
                        void *value,
                        void (*free_value)(void*));
 
-       void (*addref)(
+       struct afb_request *(*addref)(
                        struct afb_request *request);
 
        void (*unref)(
@@ -163,5 +181,22 @@ struct afb_request_itf
                        void *(*create_value)(void *creation_closure),
                        void (*free_value)(void*),
                        void *creation_closure);
+
+       int (*subscribe_eventid)(
+                       struct afb_request *request,
+                       struct afb_eventid *eventid);
+
+       int (*unsubscribe_eventid)(
+                       struct afb_request *request,
+                       struct afb_eventid *eventid);
+
+       void (*subcall_request)(
+                       struct afb_request *request,
+                       const char *api,
+                       const char *verb,
+                       struct json_object *args,
+                       void (*callback)(void*, int, struct json_object*, struct afb_request *request),
+                       void *cb_closure);
+
 };