libevent原始碼初識及目錄結構分析
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- EOS原始碼分析(7)目錄結構原始碼
- 初識Linux目錄結構Linux
- PostgreSQL:原始碼目錄結構SQL原始碼
- Apache原始碼目錄結構Apache原始碼
- 深入Vue - 原始碼目錄及構建過程分析Vue原始碼
- Android原始碼目錄結構詳解Android原始碼
- 分析Angular目錄結構Angular
- 【Zookeeper】原始碼分析目錄原始碼
- 2.3 sqlmap目錄及結構SQL
- Android 目錄結構分析Android
- Laravel的目錄結構分析Laravel
- vue@2.0原始碼學習---目錄結構分析與準備工作Vue原始碼
- Netty 原始碼分析-目錄Netty原始碼
- 【Netty】原始碼分析目錄Netty原始碼
- 程式碼目錄結構記錄
- 人人都能懂的Vue原始碼系列(一)—Vue原始碼目錄結構Vue原始碼
- Kubernetes原始碼系列:Kubernetes目錄結構原始碼
- libevent原始碼分析:hello-world例子原始碼
- Linux 目錄結構:/lib 分析Linux
- Dubbo原始碼分析(七)服務目錄原始碼
- Linux 目錄結構及詳細操作Linux
- 【MyBatis原始碼分析】select原始碼分析及小結MyBatis原始碼
- vue 原始碼學習(一) 目錄結構和構建過程簡介Vue原始碼
- Linux之旅第一篇-目錄結構及操作目錄Linux
- 初識makefile結構
- PostgreSQL 目錄結構SQL
- fabric 目錄結構
- dedecms 目錄結構
- Android Studio目錄結構及工程專案結構解析Android
- Linux 目錄結構及檔案基本操作Linux
- Android 原始碼結構分析Android原始碼
- Netty原始碼分析(七):初識ChannelPipelineNetty原始碼
- class檔案的基本結構及proxy原始碼分析二原始碼
- ReactNative原始碼解析-初識原始碼React原始碼
- 資料結構初識資料結構
- Tomcat目錄結構Tomcat
- Jmeter之目錄結構JMeter
- ecos框架目錄結構框架