ec是基于libevet的C++11封装。
QQ: 405026523
欢迎大家恶贡献代码!
- C++版本需要支持C++11
- libevent需要2.0以上版本
没有提供CMake和安装脚本。
编译成动态链接库:
make -f makefile
编译测试用例:
make -f ExampleMakefile
ec的的命名空间为ec,主要包含如下几个类:
- Loop 事件循环和线程的结合,对libevent中struct event_base的封装;
- Timer 定时器类,依赖Loop,支持按周期定时、延迟定时、永久定时;
- TcpServer TCP服务器类,线程安全,可设置IO线程数量;
- HttpServer HTTP服务器类,仅实现了部分简单功能;
Loop封装了事件循环和线程管理,建议一个线程只拥有一个Loop; Timer、TcpSocket必需关联到Loop,相应行为都将在Loop的线程触发。
#include "ec/loop.h"
int main(int argc, char *argv[])
{
ec::Loop loop;
loop.start(false); //false当前线程阻塞,true则以新线程运行
loop.wait(); //等待线程结束,仅对以新线程运行方式有效
}
多线程的TCP服务器,可设置IO线程的数量
先用make -f ExampleMakefile编译生成test后:
./test timer
./test timer 测试定时器用法。
./test tcp 测试TCP的用法。
./test http 将启动HTTP服务器,访问http://127.0.0.1:4567/。
test.cpp 为主入口,具体功能实现在example目录中
定时器示例
void timerExample();
TCP示例
void tcpExample();
HTTP示例
void httpExample();