多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
ev\_base是基于libevent封装了一层C++类接口,源码文件两个:ev\_base.h和ev\_base.cpp;接口定义如下: ![](https://img.kancloud.cn/f7/a7/f7a7ce1ae5af32f6f74fdf218f129136_798x868.png =600x) ### 源码其实非常的简单,就是基于libevent实现了定时器和loop,以及接口对资源的管理(内存申请回收等): ### ``` 1.ev_base::ev_base()   2.{   3.    ::signal(SIGPIPE, SIG_IGN);   4.   5.    this->base_ = event_base_new();   6.   7.    this->tv_.tv_sec = 0;   8.    this->tv_.tv_usec = 1000 * 100;   9.   10.    evtimer_set(&this->evtimer_, ev_base::on_timer, this);   11.    event_base_set(this->base_, &this->evtimer_);   12.    evtimer_add(&this->evtimer_, &this->tv_);   13.}   14.   15.ev_base::~ev_base()   16.{   17.    evtimer_del(&this->evtimer_);   18.   19.    event_base_free(this->base_);   20.}   21.   22.void ev_base::loop()   23.{   24.    event_base_dispatch(this->base_);   25.}   26.   27.void ev_base::on_timer(int fd, short event, void *arg)   28.{   29.    ev_base *self = reinterpret_cast<ev_base *>(arg);   30.   31.    self->on_ticks();   32.   33.    evtimer_add(&self->evtimer_, &self->tv_);   34.} ``` ### * event\_base\_new : 实例化一个base。 * event\_base\_free : 释放实例对象。 * event\_base\_dispatch :分发,进入无限循环,和先前章节中link\_loop\_forever一致。 * evtimer\_set : 设置定时器。 * event\_base\_set : 设置实例。 * evtimer\_add :添加定时器。 * evtimer\_del :删除定时器。