数据结构:html
struct uloop_fd { uloop_fd_handler cb; int fd; bool eof; bool error; bool registered; uint8_t flags; }; struct uloop_timeout { struct list_head list; bool pending; uloop_timeout_handler cb; struct timeval time; }; struct uloop_process { struct list_head list; bool pending; uloop_process_handler cb; pid_t pid; };
事件回调函数:linux
typedef void (*uloop_fd_handler)(struct uloop_fd *u, unsigned int events) // 描述符 typedef void (*uloop_timeout_handler)(struct uloop_timeout *t) // 定时器 typedef void (*uloop_process_handler)(struct uloop_process *c, int ret) // 进程
事件标志:数据结构
#define ULOOP_READ (1 << 0) #define ULOOP_WRITE (1 << 1) #define ULOOP_EDGE_TRIGGER (1 << 2) #define ULOOP_BLOCKING (1 << 3) #define ULOOP_EVENT_MASK (ULOOP_READ | ULOOP_WRITE)
主框架:框架
/** * 初始化事件循环 */ int uloop_init(void) /** * 事件循环主处理入口 */ void uloop_run(void) /** * 销毁事件循环 */ void uloop_done(void)
描述符事件:函数
/** * 注册一个新描述符到事件处理循环 */ int uloop_fd_add(struct uloop_fd *sock, unsigned int flags) /** * 从事件处理循环中销毁指定描述符 */ int uloop_fd_delete(struct uloop_fd *sock)
定时器事件:oop
/** * 注册一个新定时器 */ int uloop_timeout_add(struct uloop_timeout *timeout) /** * 设置定时器超时时间(毫秒),并添加 */ int uloop_timeout_set(struct uloop_timeout *timeout, int msecs) /** * 销毁指定定时器 */ int uloop_timeout_cancel(struct uloop_timeout *timeout) /** * 获取定时器还剩多长时间超时 */ int uloop_timeout_remaining(struct uloop_timeout *timeout)
进程事件:ui
/** * 注册新进程到事件处理循环 */ int uloop_process_add(struct uloop_process *p) /** * 从事件处理循环中销毁指定进程 */ int uloop_process_delete(struct uloop_process *p)