| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #ifndef _TOOLKIT_EVENT_POLL_H_
- #define _TOOLKIT_EVENT_POLL_H_
- #ifndef _WIN32
- #include "config.h"
- #include <sys/epoll.h>
- /*
- edge-triggered(ET): use this flag, the app should use nonblock fd
- level-triggered(LT): default
- */
- #define MAX_EPOLL_EVENT 1024
- /*event mask*/
- #define EV_READ EPOLLIN
- #define EV_ACCEPT EPOLLIN
- #define EV_WRITE EPOLLOUT
- /*to disable the associated fd after the receipt of an event*/
- #define EV_READ_ONCE (EPOLLIN | EPOLLONESHOT)
- #define EV_WRITE_ONCE (EPOLLOUT | EPOLLONESHOT)
- #define EV_READ_WRITE_WITH_LT_FULL (EPOLLOUT | EPOLLIN | EPOLLERR | EPOLLHUP)
- #define EV_READ_WRITE_WITH_LT_PURE (EPOLLOUT | EPOLLIN)
- #define DEFAULT_INTEREST_OP_COUNT 3
- #define EV_INTEREST_ENTRY_IN_IDX 0
- #define EV_INTEREST_ENTRY_OUT_IDX 1
- #define EV_INTEREST_ENTRY_ERR_IDX 2
- #define EV_BUS_ENDPOINT (((uint32_t)(1)) << 16)
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct event_epoll_data_s;
- struct event_epoll_s;
- typedef void(*evtpoll_data_cb)(struct event_epoll_s* ep,
- struct event_epoll_data_s* d,
- unsigned int events);
- typedef struct event_epoll_data_s event_epoll_data_t;
- typedef struct event_epoll_s evtpoll_t;
- event_epoll_data_t* evtpoll_data_new();
- void evtpoll_data_destroy(event_epoll_data_t* epoll_data);
- int evtpoll_data_set(event_epoll_data_t* epoll_data, int type, int fd, void* data);
- int evtpoll_data_get_fd(const event_epoll_data_t* const epoll_data);
- int evtpoll_data_get_type(const event_epoll_data_t* const epoll_data);
- void evtpoll_data_set_data(event_epoll_data_t* epoll_data, void* data);
- void* evtpoll_data_get_data(const event_epoll_data_t* const epoll_data);
- evtpoll_t* evtpoll_create();
- void evtpoll_destroy(evtpoll_t* evt_poll);
- int evtpoll_get_epoll_fd(const evtpoll_t* const evt_poll);
- int evtpoll_deal(evtpoll_t* ep, struct epoll_event* event, void** data, int cancel);
- int evtpoll_wait(evtpoll_t* ep, struct epoll_event event_array[], int event_array_size, int timeout);
-
- int evtpoll_attach(evtpoll_t* ep, int interest_fd);
- void evtpoll_detach(evtpoll_t* ep, int interest_fd);
- int evtpoll_subscribe(evtpoll_t* ep, int event_mask, int fd, void* rdata, void* wdata);
- int evtpoll_unsubscribe(evtpoll_t* ep, int event_mask, int fd, int only_reset, void** rdata, void** wdata);
- int evtpoll_loop(evtpoll_t* ep, int timeout);
- #ifdef __cplusplus
- } // extern "C" {
- #endif
- #endif //NOT _WIN32
- #endif //_TOOLKIT_EVENT_POLL_H_
|