libevent源代碼初識及目錄結構分析

1.libevent源代碼獲取

最新代碼直接從libevent的github便可,連接以下:
https://github.com/libevent/l...
編譯方法在該github介紹頁說的很詳細了,這裏再也不多說。linux

2.libevent源代碼的目錄結構

咱們下載下來源代碼之後,看到有不少文件,不少目錄,每每不知道從何入手,我一開始也是這樣,後來我花時間把每一個目錄和一些主要的文件內容弄明白後,閱讀源代碼和學習才順手一點。git

目錄結構內容以下:github

目錄名稱 目錄內容
.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的實現方式,使用方法等進行詳細的介紹。socket

cpp加油站(ID:xy13640954449), 做者linux服務器開發老司機,歡迎來撩!
相關文章
相關標籤/搜索