libevent 源码学习四 —— 源代码文件组织
前言 : 详细分析源代码之前,应该对其代码文件的基本结构有个大概的认识和分类。
源代码组织结构:
libevent源代码主要可分为:头文件、内部使用的头文件、辅助功能函数、日志、libevent框架、对系统 I/O 多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于
libevent 的两个实用库。
1 头文件
主要就是 event.h : 事件宏定义、接口函数声明、主要结构体 event 的声明;
2 内部头文件
xxx-internal.h : 内部数据结构和函数,对外不可见,以达到信息隐藏的目的;
3 libevent 框架
event.c :event 整体框架的代码实现
4 对系统 I/O 多路复用机制的封装
epoll.c 、select.c 、 devpoll.c、kqueue.c
5 定时事件管理
min-heap.h : 以时间作为key的小根堆结构
6 信号管理
signal.c :对信号事件的处理
7 辅助功能函数
evutil.h 和 evutil.c :一些辅助功能函数,包括创建 socket pair 和一些时间操作函数
8 日志
log.h 和 log.c
9 缓冲区管理
evbuffer.c 和 buffer.c :libevent 对缓冲区的封装
10 基本数据结构
compat / sys 下的两个源文件 : queue.h 是 libevent 基本数据结构的实现,包括链表,双向链表,队列等
_libevent_time.h : 一些用于时间操作的结构体定义、函数和宏定义
11 使用网络库
http 和 evdns : 是基于libevent 实现的 http 服务器 和异步 dns 查询库