/* * category: [core] * apply status: framework * edit status: * build status: windows&linux * description: */ #ifndef __BUS_H__ #define __BUS_H__ #pragma once #include "config.h" #include "memutil.h" #ifdef __cplusplus extern "C" { #endif #include "iobuffer.h" #define BUS_STATE_ON 1 #define BUS_STATE_OFF 0 #define BUS_INVALID_EPID -1 #define BUS_E_OK 0 #define BUS_E_FAIL -1 #define BUS_E_NOTFOUND -2 #define BUS_E_NETBROKEN -3 // url: // pipe://spcommserver1 // tcp://127.0.0.1:3232 typedef struct bus_endpt_t bus_endpt_t; typedef struct bus_endpt_callback { void (*on_pkt)(bus_endpt_t *endpt, int epid, int type, iobuffer_t **p_pkt, void *user_data); void (*on_inf)(bus_endpt_t *endpt, int epid, int type, iobuffer_t **p_pkt, void *user_data); void (*on_evt)(bus_endpt_t *endpt, int epid, int type, iobuffer_t **p_pkt, void *user_data); void (*on_msg)(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[], int *result, void *user_data); void (*on_sys)(bus_endpt_t *endpt, int epid, int state, void *user_data); void *user_data; }bus_endpt_callback; /*create bus_endpt object and sync {BUS_TYPE_ENDPT_REGISTER} messge.*/ TOOLKIT_API int bus_endpt_create(const char *url, int epid, const bus_endpt_callback *callback, bus_endpt_t **p_endpt); TOOLKIT_API void bus_endpt_destroy(bus_endpt_t *endpt); TOOLKIT_API int bus_endpt_poll(bus_endpt_t *endpt, int timeout); /*no used*/ //TOOLKIT_API int bus_endpt_send_pkt(bus_endpt_t *endpt, int epid, int type, iobuffer_t *pkt); TOOLKIT_API int bus_endpt_send_info(bus_endpt_t *endpt, int epid, int type, iobuffer_t *pkt); /*no used*/ //TOOLKIT_API int bus_endpt_bcast_evt(bus_endpt_t *endpt, int type, iobuffer_t *pkt); TOOLKIT_API int bus_endpt_get_state(bus_endpt_t *endpt, int epid, int *state); TOOLKIT_API int bus_endpt_post_msg(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[]); TOOLKIT_API int bus_endpt_send_msg(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[]); TOOLKIT_API int bus_endpt_get_epid(bus_endpt_t *endpt); TOOLKIT_API const char *bus_endpt_get_url(bus_endpt_t *endpt); TOOLKIT_API int bus_endpt_set_quit_flag(bus_endpt_t *endpt); TOOLKIT_API int bus_endpt_get_quit_flag(bus_endpt_t *endpt); typedef struct bus_daemon_t bus_daemon_t; TOOLKIT_API int bus_daemon_create(int n_url, const char *urls[], int nthread, bus_daemon_t **p_daemon); TOOLKIT_API int bus_daemon_destroy(bus_daemon_t *daemon); TOOLKIT_API int bus_daemon_start(bus_daemon_t *daemon); TOOLKIT_API int bus_daemon_stop(bus_daemon_t *daemon); #ifdef __cplusplus } // extern "C" { #endif #endif //__BUS_H__