阅读背景:

[libevent源码分析] event_set

来源:互联网 

libevent应用event来封装网络事件回调,参数、fd。。。等一些信息,函数很简略

void
event_set(struct event *ev, int fd, short events,
	  void (*callback)(int, short, void *), void *arg)
{
	/* Take the current base - caller needs to set the real base later */
	ev->ev_base = current_base; //设置成默许的current_base,如果

	ev->ev_callback = callback; //设置事件回调callback;
	ev->ev_arg = arg;           //设置参数
	ev->ev_fd = fd;             //设置句柄
	ev->ev_events = events;     //设置当前的事件
    /*
     * EV_TIMEOUT   0x01
     * EV_READ      0x02
     * EV_WRITE     0x04
     * EV_SIGNAL    0x08
     * EV_PERSIST   0x10
     */
	ev->ev_res = 0;             //记载当前激活事件的类型
	ev->ev_flags = EVLIST_INIT; //设置事件标志,用于表现当前的事件处于甚么阶段
    /*
     * EVLIST_TIMEOUT   0x01     //代表event在time堆中
     * EVLIST_INSERTED  0x02     //代表event在已注册时光链表中
     * EVLIST_SIGNAL    0x04     //未见应用
     * EVLIST_ACTIVE    0x08     //代表event在激活链表中
     * EVLIST_INTERNAL  0x10     //内部应用标志
     * EVLIST_INIT      0x80     //代表event已被初始化
     */
	ev->ev_ncalls = 0;           //代表callback被履行多少次
	ev->ev_pncalls = NULL;       //指向ev_ncallsor指向NULL

	min_heap_elem_init(ev);      //初始化时光堆中的索引值

	/* by default, we put new events into the middle priority */
	if(current_base)
		ev->ev_pri = current_base->nactivequeues/2;//设置事件的权限为中间权限为默许值
}void




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: