libevent原始碼初識及目錄結構分析

TigerJin發表於2021-09-09

1.libevent原始碼獲取

最新程式碼直接從libevent的github即可,連結如下:

編譯方法在該github介紹頁說的很詳細了,這裡不再多說。

2.libevent原始碼的目錄結構

我們下載下來原始碼以後,看到有很多檔案,很多目錄,往往不知道從何入手,我一開始也是這樣,後來我花時間把每個目錄和一些主要的檔案內容弄明白後,閱讀原始碼和學習才順手一點。

目錄結構內容如下:

目錄名稱 目錄內容
.deps 裡面存放的plo字尾檔案,沒搞懂是什麼,可能是編譯生成的一些檔案
.libs 存放編譯生成的.o檔案和so檔案
autom4te.cache 也是編譯或者安裝需要的一些檔案,暫時沒搞懂具體有什麼作用
cmake 存放cmake檔案,配置cmake編譯需要的標頭檔案和原始檔路徑
compat 只有queue.h 定義了很多宏定義,主要用於singly-linked list,list,simple queue,tail queue,circle queue等結構體
inlcude 裡面當前目錄標頭檔案都是之前老版本檔案,最新版本使用include/event2裡面的標頭檔案,注意在include/event2裡面字尾帶有compat的標頭檔案都是版本更新後為了向後相容而存在的,我們這裡只研究最新版本,所以會忽略字尾帶有compat的檔案
m4 裡面存放m4檔案,m4是unix下的一種程式語言,m4檔案就是用m4語言寫的,通常是因為configure會依賴它
sample 這個不用說,存放的使用libevent的demo程式碼
test 存放單元測試的程式碼
win32_code 這個目前不明,待後續更新

3.libevent標頭檔案說明

標頭檔案內容整理如下:

標頭檔案 宣告內容
buffer.h 主要是對evbuffer進行操作,圍繞struct evbuffer進行各種操作
bufferevent.h 針對struct bufferevent 進行各種操作
bufferevent_ssl.h 獲取openssl的struct bufferevent
dns.h 針對struct evdns_base結構體進行各種操作
event-config.h 存放很多宏定義,是根據編譯時的配置生成的,下一篇文章中會重點提到
event.h libevent的核心標頭檔案,針對struct event_base結構體進行操作
http.h 針對struct evhttp進行各種操作
listener.h 針對struct evconnlistener進行操作,socket的繫結和監聽,對套接字操作在這裡
rpc.h 針對struct evrpc_base進行操作,可生成rpc伺服器和客戶端
tag.h 暫時來看,是用來將evbuffer轉換為具體型別,整形或者字串或者時間結構體之類的
thread.h libevent支援多執行緒使用
util.h 防止不支援c99,對很多系統函式進行了封裝,以便於支援c99
visibility.h 定義了一些宏定義,應該是用於動態庫呼叫方面的引數

注意:字尾帶有struct的標頭檔案裡面存放的都是結構體,我們這裡就不單獨做介紹了。

另外libevent的實現檔案.c檔案都在下載下來的原始碼的一級目錄下面,與上面說的目錄是在同一級的

好了,今天就先介紹到這裡,後續會對libevent的實現方式,使用方法等進行詳細的介紹。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2144/viewspace-2823366/,如需轉載,請註明出處,否則將追究法律責任。

相關文章