libevent 1.4.13 / 源代码文件组织

本文详细介绍了Libevent源代码的组织结构,包括头文件、内部使用的头文件、辅助功能函数等多个部分。通过这些内容,读者可以了解到Libevent如何实现事件驱动编程模型。

一、前言

详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!

二、源代码组织结构

Libevent 的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、libevent 框架、对系统 I/O 多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于 libevent 的两个实用库等几个部分,有些部分可能就是一个源文件。
源代码中的test部分就不在我们关注的范畴了。

1、头文件

主要就是 event.h:事件宏定义、接口函数声明,主要结构体 event 的声明。

2、内部头文件

xxx-internal.h:内部数据结构和函数,对外不可见,以达到信息隐藏的目的。

3、libevent框架

event.c:event 整体框架的代码实现。

4、对系统 I / O 多路复用机制的封装

  • epoll.c:对 epoll 的封装。
  • select.c:对 select 的封装。
  • devpoll.c:对 dev / poll 的封装。
  • kqueue.c:对 kqueue 的封装。

5、定时事件管理

min-heap.h:其实就是一个以时间作为 key 的小根堆结构。

6、信号管理

signal.c:对信号事件的处理。

7、辅助功能函数

evutil.h 和evutil.c:一些辅助功能函数,包括创建 socket pair 和一些时间操作函数:加、减和比较等。

8、日志

log.h 和 log.c:log 日志函数。

9、缓冲区管理

evbuffer.c 和 buffer.c:libevent 对缓冲区的封装。

10、基本数据结构

compat/sys 下的两个源文件:queue.h 是 libevent 基本数据结构的实现,包括链表,双向链表,队列等。

_libevent_time.h:一些用于时间操作的结构体定义、函数和宏定义。

11、实用网络库

http 和 evdns:是基于 libevent 实现的 http 服务器和异步 dns 查询库。

转载于:https://blog.youkuaiyun.com/jcjx0315/article/details/79693484

(SAW:Game Over)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值