libevent 1.4.13 / 源代码文件组织
一、前言
詳細分析源代碼之前,如果能對其代碼文件的基本結構有個大概的認識和分類,對于代碼的分析將是大有裨益的。本節內容不多,我想并不是說它不重要!
二、源代碼組織結構
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.csdn.net/jcjx0315/article/details/79693484
(SAW:Game Over)
總結
以上是生活随笔為你收集整理的libevent 1.4.13 / 源代码文件组织的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Cpp / checked_delete
- 下一篇: do{...}while(0) 的意义和