libevent源码剖析
文章平均质量分 90
针对C网络库libevent1.4版本源码的剖析
FreeeLinux
A3GM5H3647LPD4QVYMYAER2S47P4WZ2UKBXBCGZES2V62WEY2HULQA
展开
-
libevent中的tail queue详细分析
libevent库中第一个出现的问题就是它的event结构体用了tail queue,这个结构是在linux的/usr/include/sys/queue.h有定义,libevent库中防止未定义又定义了一遍。queue.h定义如下:#define TAILQ_HEAD(nam原创 2016-10-10 21:13:34 · 2229 阅读 · 0 评论 -
libevent的evbuffer详解(含源码详细注释+测试用例)
前天剖析了libevent的事件链表tail queue,今天来剖析一下它的evbuffer。evbuffer是libevent中的缓冲区模块,支持读写数据,尤其是可以按行读取。特别是TCP这种基于字节流的数据,需要从字节流解析自己的通讯协议,借助缓冲区保存多余的数据,以便和下一次独到的数据合并分析。evbuffer对外提供的一系列接口函数简介,可以参考这篇博客:http://原创 2016-10-12 20:44:10 · 6688 阅读 · 0 评论 -
libevent的event处理框架剖析
前几次剖析了libevent的tail queue和evbuffer,今天来剖析一下它的事件处理框架。这个在剖析evbuffer之前已经大致走过几遍,但思路不是很清晰,是因为我没有用实例去测试event流程。通过这次我学习到了剖析源码不仅要去看源码,而且你要测试它这项接口是怎么用的,不然只会似懂非懂。首先来看一下event结构体:struct event { TAILQ_ENTR原创 2016-10-14 13:33:49 · 5079 阅读 · 1 评论 -
libevent的epoll模式剖析
接着上次的进度,上次剖析了事件处理框架,这次来剖析一下libevent的epoll模式是怎样实现的。首先来看evepoll结构体:struct evepoll { //epoll的读写操作 struct event *evread; struct event *evwrite;};这个结构体将I/O的读事件和写事件封装为一个结构体。epoll操作的结构体是epo原创 2016-10-17 14:17:10 · 3398 阅读 · 0 评论 -
libevent的min_heap剖析
libevent到现在我已经剖析了8天了,有的心得写到了博客,有的没写,以后会慢慢更新。这次剖析libevent的min_heap,用来存放定时时间,它是一个最小堆构成的优先级队列,这样能保证我们每次取得超时时间最小的事件,按顺序处理。一切尽在不言中,给上代码,有注释。#ifndef _MIN_HEAP_H_#define _MIN_HEAP_H_#include "event.原创 2016-10-17 21:21:51 · 1343 阅读 · 0 评论 -
libevent的bufferevent剖析
1.什么是buffereventlibevent为输入输出缓冲区做出了一个抽象,这个抽象就是bufferevent。用来自动管理输入输出缓冲区,我们要输入输出就可以对bufferevent操作了。有数据写入bufferevent时,添加数据到输出缓冲区。bufferevent有数据供读取的时候,从输入缓冲区抽取数据。2.bufferevent结构体struct bufferevent原创 2016-10-21 18:59:16 · 2169 阅读 · 0 评论