X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=include%2Fafb-plugin.h;h=ce78e8409eb55f4442e311f78441639151e557c8;hb=bd68881a7977d2fe63d4ca85b757ed9c127ec21d;hp=8ca72704f7d3ded5813795b57d1805a3488531c3;hpb=b8d4c81cc8175ce49c77d41e572a9f1a2e367cdc;p=src%2Fapp-framework-binder.git diff --git a/include/afb-plugin.h b/include/afb-plugin.h index 8ca72704..ce78e840 100644 --- a/include/afb-plugin.h +++ b/include/afb-plugin.h @@ -15,7 +15,10 @@ * limitations under the License. */ -struct afb_req; +#pragma once + +#include "afb-req-itf.h" +#include "afb-evmgr-itf.h" /* Plugin Type */ enum AFB_pluginE @@ -51,15 +54,57 @@ 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] }; -typedef enum AFB_pluginE AFB_pluginE; -typedef enum AFB_sessionE AFB_sessionE; -typedef void (*AFB_apiCB)(struct afb_req); -typedef void (*AFB_freeCtxCB)(void*); -typedef struct AFB_restapi AFB_restapi; -typedef struct AFB_plugin AFB_plugin; +/* config mode */ +enum AFB_Mode { + AFB_MODE_LOCAL = 0, + AFB_MODE_REMOTE, + AFB_MODE_GLOBAL +}; + +struct sd_event; +struct sd_bus; + +struct afb_daemon_itf { + struct afb_evmgr (*get_evmgr)(void *closure); + struct sd_event *(*get_event_loop)(void *closure); + struct sd_bus *(*get_user_bus)(void *closure); + struct sd_bus *(*get_system_bus)(void *closure); +}; + +struct afb_daemon { + const struct afb_daemon_itf *itf; + void *closure; +}; + +struct AFB_interface +{ + int verbosity; + enum AFB_Mode mode; + 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 sd_event *afb_daemon_get_event_loop(struct afb_daemon daemon) +{ + return daemon.itf->get_event_loop(daemon.closure); +} + +static inline struct sd_bus *afb_daemon_get_user_bus(struct afb_daemon daemon) +{ + return daemon.itf->get_user_bus(daemon.closure); +} + +static inline struct sd_bus *afb_daemon_get_system_bus(struct afb_daemon daemon) +{ + return daemon.itf->get_system_bus(daemon.closure); +} -extern const struct AFB_plugin *pluginRegister ();