iowatcher.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #ifndef IO_WATCHER_H_
  2. #define IO_WATCHER_H_
  3. #include "hloop.h"
  4. #include "hplatform.h"
  5. #if !defined(EVENT_SELECT) && \
  6. !defined(EVENT_POLL) && \
  7. !defined(EVENT_EPOLL) && \
  8. !defined(EVENT_KQUEUE) && \
  9. !defined(EVENT_IOCP) && \
  10. !defined(EVENT_PORT) && \
  11. !defined(EVENT_NOEVENT)
  12. #ifdef OS_WIN
  13. //#define EVENT_IOCP // IOCP improving
  14. #define EVENT_POLL
  15. #elif defined(OS_LINUX)
  16. #define EVENT_EPOLL
  17. #elif defined(OS_MAC)
  18. #define EVENT_KQUEUE
  19. #elif defined(OS_BSD)
  20. #define EVENT_KQUEUE
  21. #else
  22. #define EVENT_SELECT
  23. #endif
  24. #endif
  25. static inline const char* iowatcher_name() {
  26. #ifdef EVENT_SELECT
  27. return "select";
  28. #elif defined(EVENT_POLL)
  29. return "poll";
  30. #elif defined(EVENT_EPOLL)
  31. return "epoll";
  32. #elif defined(EVENT_KQUEUE)
  33. return "kqueue";
  34. #elif defined(EVENT_IOCP)
  35. return "iocp";
  36. #elif defined(EVENT_PORT)
  37. return "evport";
  38. #else
  39. return "noevent";
  40. #endif
  41. }
  42. int iowatcher_init(hloop_t* loop);
  43. int iowatcher_cleanup(hloop_t* loop);
  44. int iowatcher_add_event(hloop_t* loop, int fd, int events);
  45. int iowatcher_del_event(hloop_t* loop, int fd, int events);
  46. int iowatcher_poll_events(hloop_t* loop, int timeout);
  47. #endif