Kanon(一): 概述

kanon是个人编写的基于Reactor模式的事件驱动型网络库。
kanon不是单纯的事件框架而是网络库,是因为它同时也管理读写缓冲,用户无需关心收发逻辑。由于这个特性,从用户的角度看待,事件处理是异步的。
kanon暂时不支持跨平台,仅适用于linuxunix-like平台。同时,仅支持tcp(如需支持udp, kcp等协议可以扩展)

模块划分

architecture.png

  • Thread:封装了POSIX线程接口,抽象为:Thread, Condition, Mutex,同时在其上实现了其他常用同步设施:RWLock, CountdownLatch,以及线程池
  • Log:日志包含时间戳,进程号,日志级别等,同时支持异步写入文件
  • String:提供字符流(lexical_streamfmt_stream,以及字符串工具(StringView
  • Network:最为核心的模块,包含Reactor组件(Channel, (E)Poller, EventLoop),定时器,封装好的TcpServerTcpClient等。

使用方式

该库主要提供回调注册API来处理各种IO事件,基本上用户只需要关心TcpConnectionEventLoopTcpServerTcpClientBuffer就能实现各种网络应用(具体场景可能需要更深入的了解或自己扩展)。
该库提供的事件回调主要有:

  • OnMessageCallback:处理接受的信息
  • OnHighWaterMarkCallback:在proxy等类似的服务中用于限制读入数据,一般搭配低水位回调使用。
  • OnWriteCompleteCallback:低水位回调,即写缓冲为空时调用,可以用来实现流水线分块写入,另外可以搭配高水位回调放行。
  • OnConnectionCallback:在连接建立或关闭时做一些处理。