源代码放置在`src`文件夹下,里面有若干模块: ``` src | |-- NetWork # 网络模块 | |-- Socket.cpp # 套接字抽象封装,包含了TCP服务器/客户端,UDP套接字 | |-- Socket.h | |-- sockutil.cpp # 系统网络相关API的统一封装 | |-- sockutil.h | |-- TcpClient.cpp # TCP客户端封装,派生该类可以很容易实现客户端程序 | |-- TcpClient.h | |-- TcpServer.h # TCP服务器模板类,可以很容易就实现一个高性能私有协议服务器 | |-- Session.h # TCP/UDP服务私有协议实现会话基类,用于处理TCP/UDP长连接数据及响应 | |-- Poller # 主线程事件轮询模块 | |-- EventPoller.cpp # 主线程,所有网络事件由此线程轮询并触发 | |-- EventPoller.h | |-- Pipe.cpp # 管道的对象封装 | |-- Pipe.h | |-- PipeWrap.cpp # 管道的包装,windows下由socket模拟 | |-- SelectWrap.cpp # select 模型的简单包装 | |-- SelectWrap.h | |-- Timer.cpp # 在主线程触发的定时器 | |-- Timer.h | |-- Thread # 线程模块 | |-- AsyncTaskThread.cpp # 后台异步任务线程,可以提交一个可定时重复的任务后台执行 | |-- AsyncTaskThread.h | |-- rwmutex.h # 读写锁,实验性质的 | |-- semaphore.h # 信号量,由条件变量实现 | |-- spin_mutex.h # 自旋锁,在低延时临界区适用,单核/低性能设备慎用 | |-- TaskQueue.h # functional的任务列队 | |-- threadgroup.h # 线程组,移植自boost | |-- ThreadPool.h # 线程池,可以输入functional任务至后台线程执行 | |-- WorkThreadPool.cpp # 获取一个可用的线程池(可以加入线程负载均衡分配算法) | |-- WorkThreadPool.h | |-- Util # 工具模块 |-- File.cpp # 文件/目录操作模块 |-- File.h |-- function_traits.h # 函数、lambda转functional |-- logger.h # 日志模块 |-- MD5.cpp # md5加密模块 |-- MD5.h |-- mini.h # ini配置文件读写模块,支持unix/windows格式的回车符 |-- NoticeCenter.h # 消息广播器,可以广播传递任意个数任意类型参数 |-- onceToken.h # 使用RAII模式实现,可以在对象构造和析构时执行一段代码 |-- ResourcePool.h # 基于智能指针实现的一个循环池,不需要手动回收对象 |-- RingBuffer.h # 环形缓冲,可以自适应大小,适用于GOP缓存等 |-- SqlConnection.cpp # mysql客户端 |-- SqlConnection.h |-- SqlPool.h # mysql连接池,以及简单易用的sql语句生成工具 |-- SSLBox.cpp # openssl的黑盒封装,屏蔽了ssl握手细节,支持多线程 |-- SSLBox.h |-- TimeTicker.h # 计时器,可以用于统计函数执行时间 |-- util.cpp # 其他一些工具代码,适配了多种系统 |-- util.h |-- uv_errno.cpp # 提取自libuv的错误代码系统,主要是为了兼容windows |-- uv_errno.h ```