bufferevent_setcb(ioev, stdio_callback, NULL, NULL, base); bufferevent_enable(ioev, EV_READ | EV_PERSIST); /* 定时事件 */ struct event evtimer; struct timeval tv = {1, 0}; // {秒, 微秒} event_set(&evtimer, -1, EV_PERSIST, do_timer, &evtimer); // tv 为超时时间 event_base...
TAILQ_ENTRY(event) ev_next; /* for managing timeouts */ union { TAILQ_ENTRY(event) ev_next_with_common_timeout; int min_heap_idx; } ev_timeout_pos; evutil_socket_t ev_fd; struct event_base *ev_base; union { /* used for io events */ ...
event_set来设置event对象,包括所有者event_base对象, fd, 事件(EV_READ| EV_WRITE|EV_PERSIST), 回掉函数和参数,事件优先级是当前event_base的中间级别(current_base->nactivequeues/2) 设置监视事件后,事件处理函数可以只被调用一次或总被调用。 只调用一次:事件处理函数被调用后,即从事件队列中删除,需要在事...
event_assign(&base->sig.ev_signal, base, base->sig.ev_signal_pair[1], EV_READ | EV_PERSIST, evsig_cb, base);//pair[1]为读端,为其注册ev_signal,类型为永久性读事件 base->sig.ev_signal.ev_flags |= EVLIST_INTERNAL;//标识为内部事件 event_priority_set(&base->sig.ev_signal, 0);/...
总被调用:设置为EV_PERSIST,只加入一次,处理函数总被调用,除非采用event_remove显式地删除。 event_add() 事件添加: int event_add(struct event *ev, struct timeval *tv) 这个接口有两个参数, 第一个是要添加的事件, 第二个参数作为事件的超时值(timer). 如果该值非NULL, 在添加本事件的同时添加超时事件...
其中的 EV_PERSIST 表示当呼叫进去的时候不要把这个 event 拿掉 (继续保留在 Event Queue 里面),这点可以跟 connection_accept() 内在注册 connection_time() 的代码做比较。而 event_add(&ev, NULL) 就是把 ev 注册到 event queue 里面,第二个参数指定的是 Timeout 时间,设定成 NULL 表示忽略这项设定。
总被调用:设置为EV_PERSIST,仅仅增加一次,处理函数总被调用,除非採用event_remove显式地删除。 event_add() int event_add(struct event *ev, struct timeval *tv) 这个接口有两个參数,第一个是要加入的事件,第二个參数作为事件的超时值(timer)。假设该值非NULL,在加入本事件的同一时候加入超时事件(EV_TIM...
总被调用:设置为EV_PERSIST,只加入一次,处理函数总被调用,除非采用event_remove显式地删除。 event_add() 事件添加:int event_add(struct event *ev, struct timeval *tv) 这个接口有两个参数, 第一个是要添加的事件, 第二个参数作为事件的超时值(timer). 如果该值非NULL, 在添加本事件的同时添加超时事件(...
如果一个事件被设置了EV_PERSIST,那么这个事件就是持续化的,意思就是这个事件会保持挂起状态,即使回调函数被执行。如果你想让它变为非挂起状态,可以在回调函数中调用event_del()。 任何时候事件的回调函数触发都会重置持续化事件中的超时状态。因此,如果的事件有EV_READ/EV_PERSIST并且设置了5秒超时,那么有两种情况...
EV_PERSIST: 事件持久监听, 监听多次 EV_SIGNAL: 表示监听信号 EV_READ: 监听是否可读 1.4 event_callback_fn: 回调函数 typedef void (*event_callback_fn)(evutil_socket_t/*文件描述符*/, short/标志位/, void */*参数*/); 1.5 void *: 传入的参数 ...