event的回调函数定义及event结构和event_base结构中各个成员的描述
来源:互联网 发布:mysql 查看binlog 编辑:程序博客网 时间:2024/06/09 14:58
libevent实现了网络IO,timer,signal的事件触发机制. 可以很方便的应用于event-driven服务器中,作为其底层事件处理模块. 比较成功的案
例有 memcache(分布式缓存), PLB(负载均衡器)等.
1. 回调函数定义
void (*ev_callback)(int, short, void *arg);
这个回调函数的参数的意思为:
参数1: 表示触发事件的文件句柄,比如一个socket对象.
参数2: 表示事件发生的结果,可能是超时、可读、可写.
参数3: 表示传递给事件的参数.
2. event的结构描述
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 表示该event保存在min_heap数组中的索引*/
struct event_base *ev_base; /* 一个全局变量,管理着事件,如事件总数,事件列表*/
int ev_fd; /*文件描述符,比如一个socket*/
short ev_events; /*该事件的触发信号,如EV_READ|EV_WRITE
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 */
/*事件的使用过程定义,
1. 初始化(EVLIST_INIT,在event_set中设置)
2. 加入到事件列表(EVLIST_INSERTED,在event_add中设置,
如果使用event_add时指定超时事件,则同时使用EVLIST_TIMEOUT标志把该事件加入到超时事件列表)
3. 事件活动(EVLIST_ACTIVE,在event_active中设置)
*/
int ev_flags;
};
3. event_base 的结构描述
event_base 定义在event-internal.h文件中
struct event_base {
const struct eventop *evsel; //表示选择的事件引擎,可能为:epoll, poll, select
void *evbase; //全局对象
int event_count; /* counts number of total events */
int event_count_active; /* counts number of active events */
int event_gotterm; /* Set to terminate loop */
int event_break; /* Set to terminate loop immediately */
/* active event management */
struct event_list **activequeues;
int nactivequeues;
/* signal handling info */
struct evsignal_info sig;
struct event_list eventqueue;
struct timeval event_tv; //系统的当前时间
struct min_heap timeheap; //用来检测事件是否超时的堆栈
struct timeval tv_cache; //与event::ev_timeout进行比较,确定事件是否超时
};
- event的回调函数定义及event结构和event_base结构中各个成员的描述
- [libevent]event,event_base结构体描述
- libevent---核心event和event_base
- event结构体中几个变量的作用
- 数的定义及存储结构
- 如何求出C语言结构体中各个成员的大小及内存偏移量
- Html中Document和Event里各种坐标的定义
- 什么是回调函数,如何定义和实现一个类的成员函数为回调函数(转)
- 什么是回调函数,如何定义和实现一个类的成员函数为回调函数(转)
- libevent使用(二) ----- event_base 和 event
- PHP 中回调函数的定义
- 回调函数的定义和使用
- 如何定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数
- 定义和实现一个类的成员函数为回调函数
- 如何定义和实现一个类的成员函数为回调函数(转)
- JavaBean的三个特点
- 线程函数参数(LPVOID Param)
- web页面加载时显示加载状态
- 视频播放器
- VC编程常见问题解答收集贴
- event的回调函数定义及event结构和event_base结构中各个成员的描述
- 传英特尔欲批量生产上网本 采用Android系统
- 多台机器安装Ubuntu软件的技巧
- 谷歌或推Android桌面系统挑战Windows 7
- C# winform对话框用法大全
- 视频播放器(二)
- strut2+spring2 validation 错误释放
- 写给计算机软件专业的大学生
- 根号笔算方法总结