bus.h 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * category: [core]
  3. * apply status: framework
  4. * edit status:
  5. * build status: windows&linux
  6. * description:
  7. */
  8. #ifndef __BUS_H__
  9. #define __BUS_H__
  10. #pragma once
  11. #include "config.h"
  12. #include "memutil.h"
  13. #ifdef __cplusplus
  14. extern "C" {
  15. #endif
  16. #include "iobuffer.h"
  17. #define BUS_STATE_ON 1
  18. #define BUS_STATE_OFF 0
  19. #define BUS_INVALID_EPID -1
  20. #define BUS_E_OK 0
  21. #define BUS_E_FAIL -1
  22. #define BUS_E_NOTFOUND -2
  23. #define BUS_E_NETBROKEN -3
  24. // url:
  25. // pipe://spcommserver1
  26. // tcp://127.0.0.1:3232
  27. typedef struct bus_endpt_t bus_endpt_t;
  28. typedef struct bus_endpt_callback {
  29. void (*on_pkt)(bus_endpt_t *endpt, int epid, int type, iobuffer_t **p_pkt, void *user_data);
  30. void (*on_inf)(bus_endpt_t *endpt, int epid, int type, iobuffer_t **p_pkt, void *user_data);
  31. void (*on_evt)(bus_endpt_t *endpt, int epid, int type, iobuffer_t **p_pkt, void *user_data);
  32. void (*on_msg)(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[], int *result, void *user_data);
  33. void (*on_sys)(bus_endpt_t *endpt, int epid, int state, void *user_data);
  34. void *user_data;
  35. }bus_endpt_callback;
  36. /*create bus_endpt object and sync {BUS_TYPE_ENDPT_REGISTER} messge.*/
  37. TOOLKIT_API int bus_endpt_create(const char *url, int epid, const bus_endpt_callback *callback, bus_endpt_t **p_endpt);
  38. TOOLKIT_API void bus_endpt_destroy(bus_endpt_t *endpt);
  39. TOOLKIT_API int bus_endpt_poll(bus_endpt_t *endpt, int timeout);
  40. TOOLKIT_API int bus_endpt_send_pkt(bus_endpt_t *endpt, int epid, int type, iobuffer_t *pkt);
  41. TOOLKIT_API int bus_endpt_send_info(bus_endpt_t *endpt, int epid, int type, iobuffer_t *pkt);
  42. TOOLKIT_API int bus_endpt_bcast_evt(bus_endpt_t *endpt, int type, iobuffer_t *pkt);
  43. TOOLKIT_API int bus_endpt_get_state(bus_endpt_t *endpt, int epid, int *state);
  44. TOOLKIT_API int bus_endpt_post_msg(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[]);
  45. TOOLKIT_API int bus_endpt_send_msg(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[]);
  46. TOOLKIT_API int bus_endpt_get_epid(bus_endpt_t *endpt);
  47. TOOLKIT_API const char *bus_endpt_get_url(bus_endpt_t *endpt);
  48. TOOLKIT_API int bus_endpt_set_quit_flag(bus_endpt_t *endpt);
  49. TOOLKIT_API int bus_endpt_get_quit_flag(bus_endpt_t *endpt);
  50. typedef struct bus_daemon_t bus_daemon_t;
  51. TOOLKIT_API int bus_daemon_create(int n_url, const char *urls[], int nthread, bus_daemon_t **p_daemon);
  52. TOOLKIT_API int bus_daemon_destroy(bus_daemon_t *daemon);
  53. TOOLKIT_API int bus_daemon_start(bus_daemon_t *daemon);
  54. TOOLKIT_API int bus_daemon_stop(bus_daemon_t *daemon);
  55. #ifdef __cplusplus
  56. } // extern "C" {
  57. #endif
  58. #endif //__BUS_H__