1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- #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();
- TOOLKIT_API void evtpoll_data_destroy(event_epoll_data_t* epoll_data);
- TOOLKIT_API int evtpoll_data_set(event_epoll_data_t* epoll_data, int type, int fd, void* data);
- TOOLKIT_API int evtpoll_data_get_fd(const event_epoll_data_t* const epoll_data);
- TOOLKIT_API int evtpoll_data_get_type(const event_epoll_data_t* const epoll_data);
- TOOLKIT_API void evtpoll_data_set_data(event_epoll_data_t* epoll_data, void* data);
- TOOLKIT_API void* evtpoll_data_get_data(const event_epoll_data_t* const epoll_data);
- TOOLKIT_API evtpoll_t* evtpoll_create();
- TOOLKIT_API void evtpoll_destroy(evtpoll_t* evt_poll);
- TOOLKIT_API int evtpoll_get_epoll_fd(const evtpoll_t* const evt_poll);
- /** this function would remove the epoll mask at event*/
- TOOLKIT_API int evtpoll_deal(evtpoll_t* ep, struct epoll_event* event, void** data, int cancel);
- TOOLKIT_API int evtpoll_wait(evtpoll_t* ep, struct epoll_event event_array[], int event_array_size, int timeout);
-
- TOOLKIT_API int evtpoll_attach(evtpoll_t* ep, int interest_fd);
- TOOLKIT_API void evtpoll_detach(evtpoll_t* ep, int interest_fd);
- TOOLKIT_API int evtpoll_subscribe(evtpoll_t* ep, int event_mask, int fd, void* rdata, void* wdata);
- TOOLKIT_API int evtpoll_unsubscribe(evtpoll_t* ep, int event_mask, int fd, int only_reset, void** rdata, void** wdata);
- TOOLKIT_API int evtpoll_loop(evtpoll_t* ep, int timeout);
- #ifdef __cplusplus
- } // extern "C" {
- #endif
- #endif //NOT _WIN32
- #endif //_TOOLKIT_EVENT_POLL_H_
|