Libevent源码学习笔记一:event2/event.h
时间: 2023-12-30 09:05:40 浏览: 237
libevent:Libevent源码学习
Libevent是一个事件驱动的网络编程框架,而event.h是其核心头文件之一。该头文件定义了事件处理相关的结构体、函数和宏等内容。
下面是event.h中常用的一些定义和函数:
### 1.事件回调函数
```c
typedef void (*event_callback_fn)(evutil_socket_t fd, short events, void *arg);
```
该类型定义了事件回调函数的原型,其中fd是事件所在的文件描述符,events是事件类型,arg是用户传入的参数。
### 2.事件结构体
```c
struct event {
event_callback_fn ev_callback; // 事件回调函数
int ev_fd; // 事件所在的文件描述符
short ev_events; // 事件类型
short ev_res; // 事件结果
struct event_base *ev_base; // 事件所属的event_base
void *ev_arg; // 用户传入的参数
};
```
该结构体表示一个事件,其中ev_callback是事件回调函数,ev_fd是事件所在的文件描述符,ev_events是事件类型,ev_res是事件结果,ev_base是事件所属的event_base,ev_arg是用户传入的参数。
### 3.事件类型
```c
#define EV_TIMEOUT 0x01
#define EV_READ 0x02
#define EV_WRITE 0x04
#define EV_SIGNAL 0x08
#define EV_PERSIST 0x10
#define EV_ET 0x20
```
该宏定义了事件类型,分别为超时事件、读事件、写事件、信号事件、持续事件和边缘触发事件。
### 4.事件处理函数
```c
struct event_base *event_base_new(void);
int event_base_dispatch(struct event_base *base);
int event_base_loopexit(struct event_base *base, const struct timeval *tv);
void event_base_free(struct event_base *base);
```
这些函数用于创建event_base、处理事件、退出事件循环和释放event_base等操作。
以上是event.h中的一些常用内容,更多细节可以查看源码和官方文档。
阅读全文