X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fafb-hook.h;h=3ab98468d014111efe14e99d7bb0e84cfed18a9c;hb=52f9783ce6b488f178f26ec07e9e11ae4442e178;hp=c9ecb331083576126db8a61dfaad36354ed411ec;hpb=d45426257d5149c735e33e3055220625a919e7bc;p=src%2Fapp-framework-binder.git diff --git a/src/afb-hook.h b/src/afb-hook.h index c9ecb331..3ab98468 100644 --- a/src/afb-hook.h +++ b/src/afb-hook.h @@ -35,6 +35,7 @@ struct afb_hook_xreq; struct afb_hook_ditf; struct afb_hook_svc; struct afb_hook_evt; +struct afb_hook_session; struct afb_hook_global; /********************************************************* @@ -331,6 +332,42 @@ extern struct afb_hook_evt *afb_hook_create_evt(const char *pattern, int flags, extern struct afb_hook_evt *afb_hook_addref_evt(struct afb_hook_evt *hook); extern void afb_hook_unref_evt(struct afb_hook_evt *hook); +/********************************************************* +* section hooking session (session interface) +*********************************************************/ + +#define afb_hook_flag_session_create 0x000001 +#define afb_hook_flag_session_close 0x000002 +#define afb_hook_flag_session_destroy 0x000004 +#define afb_hook_flag_session_renew 0x000008 +#define afb_hook_flag_session_addref 0x000010 +#define afb_hook_flag_session_unref 0x000020 + +#define afb_hook_flags_session_common (afb_hook_flag_session_create|afb_hook_flag_session_close\ + |afb_hook_flag_session_renew) +#define afb_hook_flags_session_all (afb_hook_flags_session_common|afb_hook_flag_session_destroy\ + |afb_hook_flag_session_addref|afb_hook_flag_session_unref) + +struct afb_hook_session_itf { + void (*hook_session_create)(void *closure, const struct afb_hookid *hookid, struct afb_session *session); + void (*hook_session_close)(void *closure, const struct afb_hookid *hookid, struct afb_session *session); + void (*hook_session_destroy)(void *closure, const struct afb_hookid *hookid, struct afb_session *session); + void (*hook_session_renew)(void *closure, const struct afb_hookid *hookid, struct afb_session *session); + void (*hook_session_addref)(void *closure, const struct afb_hookid *hookid, struct afb_session *session); + void (*hook_session_unref)(void *closure, const struct afb_hookid *hookid, struct afb_session *session); +}; + +extern void afb_hook_session_create(struct afb_session *session); +extern void afb_hook_session_close(struct afb_session *session); +extern void afb_hook_session_destroy(struct afb_session *session); +extern void afb_hook_session_renew(struct afb_session *session); +extern void afb_hook_session_addref(struct afb_session *session); +extern void afb_hook_session_unref(struct afb_session *session); + +extern struct afb_hook_session *afb_hook_create_session(const char *pattern, int flags, struct afb_hook_session_itf *itf, void *closure); +extern struct afb_hook_session *afb_hook_addref_session(struct afb_hook_session *hook); +extern void afb_hook_unref_session(struct afb_hook_session *hook); + /********************************************************* * section hooking global (global interface) *********************************************************/