• libevent源码深度剖析四


    libevent源码深度剖析四

    ——libevent源代码文件组织

    1 前言

    详细分析源代码之前,如果能对其代码文件的基本结构有个大概的认识和分类,对于代码的分析将是大有裨益的。本节内容不多,我想并不是说它不重要!

    2 源代码组织结构

    Libevent的源代码虽然都在一层文件夹下面,但是其代码分类还是相当清晰的,主要可分为头文件、内部使用的头文件、辅助功能函数、日志、 libevent框架、对系统I/O多路复用机制的封装、信号管理、定时事件管理、缓冲区管理、基本数据结构和基于libevent的两个实用库等几个部 分,有些部分可能就是一个源文件。
    源代码中的test部分就不在我们关注的范畴了。
    1)头文件
    主要就是event.h:事件宏定义、接口函数声明,主要结构体event的声明;
    2)内部头文件
    xxx-internal.h:内部数据结构和函数,对外不可见,以达到信息隐藏的目的;
    3)libevent框架
    event.c:event整体框架的代码实现;
    4)对系统I/O多路复用机制的封装
    epoll.c:对epoll的封装;
    select.c:对select的封装;
    devpoll.c:对dev/poll的封装;
    kqueue.c:对kqueue的封装;
    5)定时事件管理
    min-heap.h:其实就是一个以时间作为key的小根堆结构;
    6)信号管理
    signal.c:对信号事件的处理;
    7)辅助功能函数
    evutil.h 和evutil.c:一些辅助功能函数,包括创建socket pair和一些时间操作函数:加、减和比较等。
    8)日志
    log.h和log.c:log日志函数
    9)缓冲区管理
    evbuffer.c和buffer.c:libevent对缓冲区的封装;
    10)基本数据结构
    compat/sys下的两个源文件:queue.h是libevent基本数据结构的实现,包括链表,双向链表,队列等;_libevent_time.h:一些用于时间操作的结构体定义、函数和宏定义;
    11)实用网络库
    http和evdns:是基于libevent实现的http服务器和异步dns查询库;

    3 小结

    本节介绍了libevent的组织和分类,下面将会详细介绍libevent的核心部分event结构。

  • 相关阅读:
    python --(链表)
    Cocos Creator_继承组件单例
    JDK丨WIN10配置JDK1.8 (解决javac不是内部或外部命令,也不是可运行的程序或批处理文件)
    debug apk logCat
    JavaScript 当前URL取参返回字典
    Javascript扩展String.prototype实现格式金额、格式时间、字符串连接、计算长度、是否包含、日期计算等功能
    cocos2d JS 源生js实现each方法
    Cocos Creator 动态设置Canvas的宽度与高度,更改适配
    JavaScript 判断是PC端还是移动端
    cocos creator使用anysdk接入admob广告教程
  • 原文地址:https://www.cnblogs.com/breg/p/3725724.html
Copyright © 2020-2023  润新知