libevent代碼結構

libevent的源代碼雖然都在一層文件夾下,可是其代碼分類至關清晰.只要分爲頭文件,內部使用頭文件,輔助功能函數,日誌,libevent框架,對系統I/O多路複用機制的封裝,信號管理,定時事件管理,緩衝區管理,基本數據結構和libevent的兩個實用庫等幾個部分,有些部分可能就是一個源文件.git

頭文件[*.h]

libevent公用頭文件都安裝在event2目錄中,分爲三類:github

  • API頭文件:定義libevent公用接口.這類頭文件沒有特定後綴.
  • 兼容頭文件:爲已放棄的函數提供兼容的頭部包含定義
  • 結構頭文件:這類頭文件以相對不穩定的佈局定義各類結構體。這些結構體重的一些事爲了提供快速訪問而暴露。直接依賴這類頭文件中的任何結構體都會破壞程序對其餘版本libevent的二進制兼容性,有時候是以很是難以調試的方式出現。這類頭文件具備後綴"_struct.h"

其中compat/sys/queue.h 中一系列宏定義了5個數據結構:單向鏈表,雙向鏈表,簡單隊列,Tail 隊列,環形隊列服務器

實現[*.c]

event.c : event主要方法實現數據結構

epoll.c : 對epoll的封裝框架

select.c : 對select的封裝異步

devpull.c : 對dev/poll的封裝socket

kqueue.c : 對kueue的封裝函數

signal.c : 對信號事件的處理佈局

evutil.c : 一些輔助功能函數的實現,包含建立socket pair和一些時間操做函數學習

log.c : log日誌實現

buffer*.c : 對緩衝區封裝

http和evdns 是基於libevent實現的http服務器和異步dns查詢庫.


部份內容整理來源與互聯網博客,僅做學習,分享,若有侵犯,望聯繫刪除

若是以爲有用,能夠Github上star並鼓勵我,或者Pull Reauest 修正

相關文章
相關標籤/搜索