hevent.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #ifndef __HW_EVNET_H_
  2. #define __HW_EVNET_H_
  3. #include "hloop.h"
  4. #include "hplatform.h"
  5. #define READ_EVENT 0x0001
  6. #define WRITE_EVENT 0x0004
  7. #define READ_INDEX 0
  8. #define WRITE_INDEX 1
  9. #define EVENT_INDEX(type) ((type == READ_EVENT) ? READ_INDEX : WRITE_INDEX)
  10. int hloop_event_init(hloop_t* loop);
  11. int hloop_event_cleanup(hloop_t* loop);
  12. int hloop_add_event(hevent_t* event, int type = READ_EVENT|WRITE_EVENT);
  13. int hloop_del_event(hevent_t* event, int type = READ_EVENT|WRITE_EVENT);
  14. int hloop_handle_events(hloop_t* loop, int timeout = INFINITE);
  15. int _on_read(hevent_t* event);
  16. int _on_write(hevent_t* event);
  17. #if !defined(EVENT_SELECT) && !defined(EVENT_POLL) && !defined(EVENT_EPOLL) && \
  18. !defined(EVENT_IOCP) && !defined(EVENT_KQUEUE) && !defined(EVENT_NOEVENT)
  19. #ifdef OS_WIN
  20. //#define EVENT_IOCP
  21. #define EVENT_SELECT
  22. #elif defined(OS_LINUX)
  23. #define EVENT_EPOLL
  24. #elif defined(OS_MAC)
  25. #define EVENT_KQUEUE
  26. #elif defined(OS_BSD)
  27. #define EVENT_KQUEUE
  28. #else
  29. #define EVENT_SELECT
  30. #endif
  31. #endif
  32. int _event_init(hloop_t* loop);
  33. int _event_cleanup(hloop_t* loop);
  34. int _add_event(hevent_t* event, int type);
  35. int _del_event(hevent_t* event, int type);
  36. int _handle_events(hloop_t* loop, int timeout);
  37. #endif // __HW_EVNET_H_