文章目录
  • 头文件目录include/event2。该目录自Libevent朱版本升级之2.0之后引入;其中的头文件是提供给应用程序使用的。如event.h提供核心函数、http.h提供HTTP协议相关服务、rpc.h提供远程调用支持。
  • 源码根目录下的头文件。这些头文件分为两类:一类是对include/event2目录下部分头文件的封装;一类供libevent内部使用,这类头文件都具有*-internal.h形式。
  • 通用数据结构目录cpmpat/sys。该目录下仅有一个头文件queue.h。该文件封装了跨平台的基础数据结构:单向链表、双向链表、队列、尾队列、循环队列。
  • sample目录。示例程序。
  • test目录。测试程序。
  • WIN32-Code目录。Windows平台上的专用代码。
  • event.c。实现libevent的整体框架。主要是对event与event_base对象的相关操作。
  • devpoll.c、kqueue.c、evport.c、select.c、win32select.c、poll.c与epoll.c。分别封装了/dev/poll、kqueue、event ports、POSIX select、Windows select、poll、epoll这些I/O复用机制。这些文件的主要内容相似,都是针对结构体eventop所定义的接口函数的实现。
  • signal.c。提供对信号的支持。其内容也是针对eventop所定义的接口函数的具体实现。
  • evmap.c。维护句柄与事件处理器之间的映射关系。
  • event_tagging.c。提供向缓冲区添加标记数据以及从缓冲区中读取标记数据的函数。
  • event_iocp.c。提供对Windows IOCP的支持。
  • buffer*.c。提供对网络I/O缓冲的控制。包含输入输出数据过滤、传输速率限制、使用SSL协议、零拷贝文件传输。
  • evthread*.c。提供对多线程的支持。
  • listener.c文件。封装对监听socket的操作,包括监听连接与接收连接。
  • logs.c文件。libevent的日志系统。
  • evutil.c、evutil_rand.c、strlcpy.c与arc4random.c文件。提供一些基本操作,如生成随机数、获取socket地址信息、读取文件、设置socket属性等。
  • evdns.c、http.c与evrpc.c。分别提供对DNS协议、HTTP协议、RPC协议的支持。