对事件处理流程有了高层的认识后,本节将详细介绍libevent 的核心结构event,以及
libevent对event的管理。
1 libevent的核心-event
Libevent是基于事件驱动(event-driven)的,从名字也可以看到event是整个库的核心。
event就是Reactor框架中的事件处理程序组件;它提供了函数接口,供Reactor在事件发生
时调用,以执行相应的事件处理,通常它会绑定一个有效的句柄。
首先给出event结构体的声明,它位于event.h文件中:
下面详细解释一下结构体中各字段的含义。
1)ev_events:eve
libevent对event的管理。
1 libevent的核心-event
Libevent是基于事件驱动(event-driven)的,从名字也可以看到event是整个库的核心。
event就是Reactor框架中的事件处理程序组件;它提供了函数接口,供Reactor在事件发生
时调用,以执行相应的事件处理,通常它会绑定一个有效的句柄。
首先给出event结构体的声明,它位于event.h文件中:
struct event{
TAILQ_ENTRY(event) ev_next;
TAILQ_ENTRY(event) ev_active_next;
TAILQ_ENTRY(event) ev_signal_next;
unsigned int min_heap_idx; /* for managing timeouts */
struct event_base*ev_base;
int ev_fd;
short ev_events;
short ev_ncalls;
short*ev_pncalls; /* Allows deletes in callback */
struct timeval ev_timeout;
int ev_pri; /* smaller numbers are higher priority */
void(*ev_callback)(int, short, void*arg);
void*ev_arg;
int ev_res; /* result passed to event callback */
int ev_flags;
};
下面详细解释一下结构体中各字段的含义。
1)ev_events:eve