Libevent book 笔记(2) Preliminaries

Libevent from 10,000 feet

libevent由以下这些组件或者说部分组成:

  • evutil
    对不同平台的网络实现的一个通用的抽象。或者说,提供了一个通用的接口,封装了底层不同平台的网络实现。主要这里指的是平台的网络模块的抽象或者封装。比方说recv或者send函数在不同平台可能有不同的调用接口,而libevent则对此作了封装,并提供了一套一致的读写接口。

  • event and event_base
    这是libevent的中心,提供了一套抽象的api,以适应不同平台的基于事件的非堵塞IO后端,注意,这里着重的是事件,包括socket什么时候可读可写,基本的计时器操作,以及检测操作系统信号。

  • bufferevent
    针对libevent基于事件的内核,提供了一套基于buffer事件的更为便利的封装,而不是基于socket本身的事件。bufferevent本身也是支持多种后端的,因此对不同的平台,是可以充分利用平台提供的高效非堵塞IO机制的。

  • evbuffer
    这个模块实现了bufferevent底层的buferr,以及提供了对其高效便利的访问操作。

  • evhttp
    一个简单的HTTP客户端和服务端的实现

  • evdns
    一个简单的DNS客户端和服务端的实现

  • evrpc
    一个简单的RPC实现

The Libraries

构建libevent时,会缺省安装下面这些库:

  • libevent_core
    所有核心事件和缓冲的操作函数,包括所有的event_base,evbuffer,bufferevent,以及一些应用函数。

  • libevent_extra
    定义了一些协议特定的函数,包括HTTP,DNS,RPC。

  • libevent
    由于一些历史原因提供的这个库,包含了前面提到的两个库,将来可能会取消的。

下面这些库可能只在某些平台上安装:

  • libevent_pthreads
    基于pthreads库的线程和锁的实现。如果不是确实要在多线程中使用libevent,那么就不需要链接这个库。

  • libevent_openssl
    支持使用bufferevent和OpenSSL库进行加密通信,同样,如果不需要,也是可以不用链接的。

The Headers

所有公共的libevent的头文件都安装在event2目录下,头文件有三类:

  • API headers
    API头文件定义了libevent当前版本的公共接口,这些头文件没有特别的后缀。

  • Compatibility headers
    兼容性头文件包含了一些过时的定义,并不需要包含这些头文件,除非要移植使用libevent旧版本的程序。

  • Structure headers
    这些头文件定义的是内存布局相对易变的结构。其中一些是为了更快的访问结构体,一些是由于历史原因。直接依赖于这些头文件中的结构定义可能会影响程序的二进制兼容性或者难以调试。这些头文件有后缀“_struct.h”。

(有一些旧版本的Libevent没有 event2 目录. 参见下面的 “If you have to work with an old version of Libevent” )

If you have to work with an old version of Libevent

事实上,libevent有差不多10年没有更新了,所以这里看看就行,没有必要过于关注,相信现在使用libevent的不会使用更老版本的libevent了。

OLD HEADER……REPLACED BY CURRENT HEADERS
event.hevent2/event*.h, event2/buffer*.h event2/bufferevent*.h event2/tag*.h
evdns.hevent2/dns*.h
evhttp.hevent2/http*.h
evrpc.hevent2/rpc*.h
evutil.hevent2/util*.h
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值