#define afb_hook_flag_req_subscribe 0x001000
#define afb_hook_flag_req_unsubscribe 0x002000
#define afb_hook_flag_req_subcall 0x004000
-#define afb_hook_flag_req_subcall_result 0x010800
-#define afb_hook_flag_req_subcallsync 0x020000
-#define afb_hook_flag_req_subcallsync_result 0x040000
-#define afb_hook_flag_req_vverbose 0x080000
-#define afb_hook_flag_req_store 0x100000
-#define afb_hook_flag_req_unstore 0x200000
+#define afb_hook_flag_req_subcall_result 0x008000
+#define afb_hook_flag_req_subcallsync 0x010000
+#define afb_hook_flag_req_subcallsync_result 0x020000
+#define afb_hook_flag_req_vverbose 0x040000
+#define afb_hook_flag_req_store 0x080000
+#define afb_hook_flag_req_unstore 0x100000
+#define afb_hook_flag_req_subcall_req 0x200000
+#define afb_hook_flag_req_subcall_req_result 0x400000
/* common flags */
#define afb_hook_flags_req_life (afb_hook_flag_req_begin|afb_hook_flag_req_end)
#define afb_hook_flags_req_result (afb_hook_flag_req_success|afb_hook_flag_req_fail)
#define afb_hook_flags_req_session (afb_hook_flag_req_session_close|afb_hook_flag_req_session_set_LOA)
#define afb_hook_flags_req_event (afb_hook_flag_req_subscribe|afb_hook_flag_req_unsubscribe)
-#define afb_hook_flags_req_subcall (afb_hook_flag_req_subcall|afb_hook_flag_req_subcall_result\
+#define afb_hook_flags_req_subcalls (afb_hook_flag_req_subcall|afb_hook_flag_req_subcall_result\
+ |afb_hook_flag_req_subcall_req|afb_hook_flag_req_subcall_req_result\
|afb_hook_flag_req_subcallsync|afb_hook_flag_req_subcallsync_result)
/* extra flags */
#define afb_hook_flags_req_ref (afb_hook_flag_req_addref|afb_hook_flag_req_unref)
#define afb_hook_flags_req_context (afb_hook_flag_req_context_get|afb_hook_flag_req_context_set)
-#define afb_hook_flags_req_store (afb_hook_flag_req_store|afb_hook_flag_req_unstore)
+#define afb_hook_flags_req_stores (afb_hook_flag_req_store|afb_hook_flag_req_unstore)
/* predefined groups */
#define afb_hook_flags_req_common (afb_hook_flags_req_life|afb_hook_flags_req_args|afb_hook_flags_req_result\
- |afb_hook_flags_req_session|afb_hook_flags_req_event|afb_hook_flags_req_subcall\
+ |afb_hook_flags_req_session|afb_hook_flags_req_event|afb_hook_flags_req_subcalls\
|afb_hook_flag_req_vverbose)
#define afb_hook_flags_req_extra (afb_hook_flags_req_common|afb_hook_flags_req_ref|afb_hook_flags_req_context\
- |afb_hook_flags_req_store)
+ |afb_hook_flags_req_stores)
#define afb_hook_flags_req_all (afb_hook_flags_req_extra)
struct afb_hook_xreq_itf {
void (*hook_xreq_vverbose)(void * closure, const struct afb_xreq *xreq, int level, const char *file, int line, const char *func, const char *fmt, va_list args);
void (*hook_xreq_store)(void * closure, const struct afb_xreq *xreq, struct afb_stored_req *sreq);
void (*hook_xreq_unstore)(void * closure, const struct afb_xreq *xreq);
+ void (*hook_xreq_subcall_req)(void * closure, const struct afb_xreq *xreq, const char *api, const char *verb, struct json_object *args);
+ void (*hook_xreq_subcall_req_result)(void * closure, const struct afb_xreq *xreq, int status, struct json_object *result);
};
extern void afb_hook_init_xreq(struct afb_xreq *xreq);
extern void afb_hook_xreq_vverbose(const struct afb_xreq *xreq, int level, const char *file, int line, const char *func, const char *fmt, va_list args);
extern void afb_hook_xreq_store(const struct afb_xreq *xreq, struct afb_stored_req *sreq);
extern void afb_hook_xreq_unstore(const struct afb_xreq *xreq);
+extern void afb_hook_xreq_subcall_req(const struct afb_xreq *xreq, const char *api, const char *verb, struct json_object *args);
+extern void afb_hook_xreq_subcall_req_result(const struct afb_xreq *xreq, int status, struct json_object *result);
/*********************************************************
* section hooking ditf (daemon interface)