bus.h 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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. /*no used*/
  41. //TOOLKIT_API int bus_endpt_send_pkt(bus_endpt_t *endpt, int epid, int type, iobuffer_t *pkt);
  42. TOOLKIT_API int bus_endpt_send_info(bus_endpt_t *endpt, int epid, int type, iobuffer_t *pkt);
  43. /*no used*/
  44. //TOOLKIT_API int bus_endpt_bcast_evt(bus_endpt_t *endpt, int type, iobuffer_t *pkt);
  45. TOOLKIT_API int bus_endpt_get_state(bus_endpt_t *endpt, int epid, int *state);
  46. TOOLKIT_API int bus_endpt_post_msg(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[]);
  47. TOOLKIT_API int bus_endpt_send_msg(bus_endpt_t *endpt, int msg, int nparam, param_size_t params[]);
  48. TOOLKIT_API int bus_endpt_get_epid(bus_endpt_t *endpt);
  49. TOOLKIT_API const char *bus_endpt_get_url(bus_endpt_t *endpt);
  50. TOOLKIT_API int bus_endpt_set_quit_flag(bus_endpt_t *endpt);
  51. TOOLKIT_API int bus_endpt_get_quit_flag(bus_endpt_t *endpt);
  52. typedef struct bus_daemon_t bus_daemon_t;
  53. TOOLKIT_API int bus_daemon_create(int n_url, const char *urls[], int nthread, bus_daemon_t **p_daemon);
  54. TOOLKIT_API int bus_daemon_destroy(bus_daemon_t *daemon);
  55. TOOLKIT_API int bus_daemon_start(bus_daemon_t *daemon);
  56. TOOLKIT_API int bus_daemon_stop(bus_daemon_t *daemon);
  57. #ifdef __cplusplus
  58. } // extern "C" {
  59. #endif
  60. #endif //__BUS_H__