Kanon 概述
Kanon(一): 概述
kanon
是个人编写的基于Reactor模式的事件驱动型网络库。kanon
不是单纯的事件框架而是网络库,是因为它同时也管理读写缓冲,用户无需关心收发逻辑。由于这个特性,从用户的角度看待,事件处理是异步的。kanon
暂时不支持跨平台,仅适用于linux
和unix-like
平台。同时,仅支持tcp
(如需支持udp
, kcp
等协议可以扩展)
模块划分
Thread
:封装了POSIX
线程接口,抽象为:Thread
,Condition
,Mutex
,同时在其上实现了其他常用同步设施:RWLock
,CountdownLatch
,以及线程池
。Log
:日志包含时间戳,进程号,日志级别等,同时支持异步写入文件String
:提供字符流(lexical_stream
和fmt_stream
,以及字符串工具(StringView
)Network
:最为核心的模块,包含Reactor组件(Channel
,(E)Poller
,EventLoop
),定时器,封装好的TcpServer
和TcpClient
等。
使用方式
该库主要提供回调注册API来处理各种IO事件,基本上用户只需要关心TcpConnection
,EventLoop
,TcpServer
,TcpClient
,Buffer
就能实现各种网络应用(具体场景可能需要更深入的了解或自己扩展)。
该库提供的事件回调主要有:
OnMessageCallback
:处理接受的信息OnHighWaterMarkCallback
:在proxy等类似的服务中用于限制读入数据,一般搭配低水位回调使用。OnWriteCompleteCallback
:低水位回调,即写缓冲为空时调用,可以用来实现流水线分块写入,另外可以搭配高水位回调放行。OnConnectionCallback
:在连接建立或关闭时做一些处理。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Conzxy's blog!
评论