X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=include%2Fafb-plugin.h;h=dfb6fbad399ddb67b0766f88280f4789a7b01493;hb=46d9538587a3521caa1e3b20bf337a53ed400777;hp=ba86e1816fb53d7251d3e7c799307ff11ec4ff54;hpb=677717c5c86f107b2d196d70796a9be7db3532df;p=src%2Fapp-framework-binder.git diff --git a/include/afb-plugin.h b/include/afb-plugin.h index ba86e181..dfb6fbad 100644 --- a/include/afb-plugin.h +++ b/include/afb-plugin.h @@ -15,7 +15,11 @@ * limitations under the License. */ -struct afb_req; +#pragma once + +#include "afb-req-itf.h" +#include "afb-pollmgr-itf.h" +#include "afb-evmgr-itf.h" /* Plugin Type */ enum AFB_pluginE @@ -51,7 +55,6 @@ struct AFB_plugin const char *info; const char *prefix; const struct AFB_restapi *apis; - void (*freeCtxCB)(void*); // callback to free application context [null for standard free] }; /* config mode */ @@ -61,14 +64,33 @@ enum AFB_Mode { AFB_MODE_GLOBAL }; -struct afb_poll; +struct afb_daemon_itf { + struct afb_evmgr (*get_evmgr)(void *closure); + struct afb_pollmgr (*get_pollmgr)(void *closure); +}; + +struct afb_daemon { + const struct afb_daemon_itf *itf; + void *closure; +}; struct AFB_interface { int verbosity; enum AFB_Mode mode; - struct afb_poll (*poll_open)(int fd, uint32_t events, void (*process)(void *closure, int fd, uint32_t events), void *closure); + struct afb_daemon daemon; }; extern const struct AFB_plugin *pluginRegister (const struct AFB_interface *interface); +static inline struct afb_evmgr afb_daemon_get_evmgr(struct afb_daemon daemon) +{ + return daemon.itf->get_evmgr(daemon.closure); +} + +static inline struct afb_pollmgr afb_daemon_get_pollmgr(struct afb_daemon daemon) +{ + return daemon.itf->get_pollmgr(daemon.closure); +} + +