数据结构:
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;
};
事件回调函数:
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)
定时器事件:
/**
* 注册一个新定时器
*/
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)
进程事件:
/**
* 注册新进程到事件处理循环
*/
int uloop_process_add(struct uloop_process *p)
/**
* 从事件处理循环中销毁指定进程
*/
int uloop_process_delete(struct uloop_process *p)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。