上一次我们介绍了event_base,一个类似于事件管理器的东西,那么我们这一节就来介绍一下如何创建事件和删除事件吧。
1.使用event_new()创建事件。
函数函数原型如下:
typedef void (*event_callback_fn)(evutil_socket_t, short, void *);
struct event *event_new(struct event_base *base, evutil_socket_t fd,short what, event_callback_fn cb,void *arg);
event_new()试图分配和构造一个用于 base 的新的事件。
what 参数是上述标志的集合。
如果 fd 非负,则它是将被观察其读写事件的文件。
事件被激活时, libevent 将调用 cb 函数,
传递参数:文件描述符 fd,表示所有被触发事件的位字段 ,以及构造事件时的 arg参数。
发生内部错误,或者传入无效参数时, event_new()将返回 NULL。
所有新创建的事件都处于已初始化和非未决状态 ,调用 event_add()可以使其成为未决的。
2.使用event_free()删除事件
函数原型如下:
void event_free(struct event *event);
要释放事件,调用 event_free()。对未决或者激活状态的事件调用 event_free()是安全的:在释放事件之前,函数将会使事件成为非激活和非未决的。