网关编码一
拆了又补, 补了又拆,边拆边想,发现之前用asio socket的方式做gateway, 有不少问题。
1. 如果用asio做连接upstream server的socket, 还需要把byte buffer实现一遍,
虽然已有现成的buffer代码, 不过生搬过去还是显的略繁琐;
2. 如果用asio, 下游用的是epoll, 要在asio的async_read_some, 和epoll的 OnRead, OnWrite间穿梭,
感觉好脑残,之前的想法果然傻逼, 当然推翻它重来了;
3. 改成都用epoll监听, 方便很多。基本上就是设计一个新类 ProxySClientSocket 继承SClie
继续阅读 »
gateway的初步想法
已有一套基于epoll event的框架, 打算gateway在这个基础上, 配合boost::asio做。雏形先做个socket proxy出来.
TODO:
1,设计一个AsioClient类, 它是gw到后端具体gs的连接封装. AsioClient类想到2个方案:
a, 在原来的面向玩家的SClientSocket类和AsioClient类之间做friend, asio_write, asio_read, asio_connect的callback中, 回调SClientSocket中的对应Write, Read达到与epoll 事件打通, 因此打通玩家到后端gs的proxy
继续阅读 »
新特性
增加smallest参数配置选项,实现一键配置最小化编译,禁用所有扩展模块和依赖库
增加进程创建和控制接口
改进
增强环境变量设置接口
修改xmake.lua支持最新版xmake v2.x, 简化编译配置
Bugs修复
修复ltimer定时器不准问题
修复asio部分内存泄露问题
修复asio/httpd在linux下keepalive模式,响应很慢问题
修复windows下路径处理的一些bug
继续阅读 »
New features
Add smallest configure option
Add process operation interfaces
Changes
Improve envirnoment interfaces
Modify xmake.lua for supporting xmake v2.x
Bugs fixed
Fix ltimer bug
Fix asio memory leaks bug
Fix asio httpd response bug on linux
Fix path bug for windows
继续阅读 »
tbox主要有三种流:
stream: 最常用的流,一般用于单路阻塞、非阻塞io的处理,接口简单易用
async_stream:异步流,基于asio的流,全程回调处理,可以在单个线程里支持多路流的并发,节省系统资源,提高效率
static_stream:静态流,用于对纯buffer的位流处理,一般用于各种解析器
不管是stream还是async_stream,都可以在其上挂接多路filter,实现流之间数据过滤和变换。目前支持以下几种filter:
zip_filter:gzip、zlib的压缩和解压缩过滤器
charset_filter:字符集编码的过滤器
chunked_filter:http chunked编码的解码过滤器
继续阅读 »