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 修正

相关文章
相关标签/搜索