1. 外部API
以下相关的API都是对event_xxx的简单封装。
1.1 evsignal_new
功能:
创建一个新的event并绑定绑定signal回调函数。
备注:
其实现是直接调用event_new来实现的,宏定义如下:
#define evsignal_new(b, x, cb, arg) \
event_new((b), (x), EV_SIGNAL|EV_PERSIST, (cb), (arg))
原型:
evsignal_new(struct event_base *base, evutil_socket_t signal,
void (*cb)(evutil_socket_t, short, void *), void *arg);
1.2 evsignal_assign
功能:
对于已经创建好的event绑定signal回调函数。
备注:
#define evsignal_assign(ev, b, x, cb, arg) \
event_assign((ev), (b), (x), EV_SIGNAL|EV_PERSIST, cb, (arg))
原型:
evsignal_new(struct event* e, struct event_base *base, evutil_socket_t signal,
void (*cb)(evutil_socket_t, short, void *), void *arg);
1.3 evsignal_add
功能:
将signal event添加到底层epoll或者其他io模型中,使得event进入pending状态等待事件的发生。
备注:
#define evsignal_add(ev, tv) event_add((ev), (tv))
原型:
int event_add(struct event *ev, const struct timeval *tv);
1.4 evsignal_del
功能:
将signal event从底层epoll或者其他io模型中删除,使得event不再处理事件。
备注:
#define evsignal_del(ev) event_del(ev)
原型:
int event_del(struct event *ev);
1.5 evsignal_pending
功能:
检查当前signal event 是否在pending或者被调度状态。
备注:
#define evsignal_pending(ev, tv) event_pending((ev), EV_SIGNAL, (tv))
原型:
int
evsignal_pending(const struct event *ev, short event, struct timeval *tv);
输入参数:
tv: 当前 event如果是TIMEOUT事件的时候,返回事件的超时时间。
1.6 evsignal_initialized
功能:
判断事件是否已经被初始化过。即判断ev->ev_flags & EVLIST_INIT
是否不为0。
备注:
#define evsignal_initialized(ev) event_initialized(ev)
原型:
int evsignal_initialized(const struct event *ev);