现在的位置: 首页 > 自动控制 > 工业·编程 > 正文

libevent源代码结构

2018-02-25 22:12 工业·编程 ⁄ 共 812字 ⁄ 字号 暂无评论

evutil:用于抽象不同平台网络实现差异的通用功能。

event和event_base: libevent的核心,为各种平台特定的、基于事件的非阻塞 IO后

端提供抽象API, 让程序可以知道套接字何时已经准备好, 可以读或者写, 并且处理基

本的超时功能,检测OS信号。

bufferevent: 为libevent基于事件的核心提供使用更方便的封装。除了通知程序套接字已经准备好读写之外, 还让程序可以请求缓冲的读写操作, 可以知道何时IO已经真正发生。( bufferevent接口有多个后端, 可以采用系统能够提供的更快的非阻塞 IO方式,如Windows中的IOCP。)

evbuffer:在bufferevent层之下实现了缓冲功能,并且提供了方便有效的访问函数。

evhttp:一个简单的HTTP客户端/服务器实现。

evdns:一个简单的DNS客户端/服务器实现。

evrpc:一个简单的RPC实现。

具体的源文件,主要包括:

libevent框架:event.h, event.c

内部使用的文件:xxx-internal.h

I/O多路复用机制:epoll.c, poll.c, select.c, devpoll.c, kqueue.c

信号管理:signal.c

定时事件管理:min-heap.h,即以时间作为 key的小根堆结构

缓冲区管理 :evbuffer.c 和buffer.c,即libevent 对缓冲区的封装

日志:log.c, log.h

基本的数据结构:compat\sys 下的两个源文件: queue.h是 libevent 基本数据结构的实现,包括链表,双向链表,队列等;libevent_time.h:一些用于时间操作的结构体定义、函数和宏定义。

实用网络库:http.c 和evdns.c,即基于 libevent 实现的http 服务器和异步 dns 查询库

辅助功能函数:evutil.h 和 evutil.c:主要有socket相关操作、读写文件和时间操作函数等。

 

给我留言

留言无头像?