这里为了使代码更加简洁,直接用了transfer来挂接两路流的传输操作。
```c
// 初始化文件输入流
tb_stream_ref_t istream = tb_stream_init_from_url("/home/file.txt");
// 初始化文件输出流
tb_stream_ref_t ostream = tb_stream_init_from_file("/home/file.gz", TB_FILE_MODE_RW | TB_FILE_MODE_CREAT | TB_FILE_MODE_BINARY | TB_FILE_MODE_TRUNC);
// 初始化解压缩流,以istream作为输入
继续阅读 »
之前介绍过了stackfull的一些服务器使用例子,这里在贴一些使用stackless协程接口实现的server代码。
其实大部分接口,两者都是类似的,仅仅只是前缀的区别:tb_co_xx 和 tb_lo_xx,唯一需要注意的是:
* stackless协程尽量不要使用局部变量
* 不要再嵌套的过程里面进行协程挂起等待
文件接收服务器
这个文件服务器的功能很简单,就是不停的接收连接,然后开新协程,进行文件传输。
通过协程,从原始socket写起,也只需要不到100行代码,就可以实现一个高并发的文件服务器。
此处用到了tb_socket_sendf直接对文件句柄操作,发送到socket,内部使用sendfile实现,不
继续阅读 »
xmake将依赖库、依赖头文件、依赖类型、依赖接口统一用 option 选项机制进行了封装,更在上一层引入package包的机制,使得添加和检测依赖更加的模块化,简单化。。。
下面通过一个具体实例,来看下xmake的包机制怎么使用。。
假如你现在的工程已经有了两个包:zlib.pkg,polarssl.pkg(如何构建包,后续会详细说明,现在可以参考TBOX依赖包下已有包的例子),你的工程目录结构如下:
demo
- xmake.lua
- src
main.c
- pkg
zlib.pkg
polarssl.pkg
那么你可以修改xmake.lua来使用上述的两个依赖包:
继续阅读 »
虽然已经一年多没有维护gbox这个图形库项目了,最近确实时间不够用。。。
今年的重点是把xmake彻底正好,至少在架构和大功能(包依赖管理)上,要完全落实下来,后期就是零散的维护和插件功能扩展了。。
tbox我会陆陆续续一直进行一些小规模更新,明年上半年稍微重构一些模块后,就开始重点重新搞gbox了,这才是我一直最想做,也是最喜欢做的项目了
所以我宁愿开发的慢点,也要把它做精,做到最好。。
好了,回归正题,虽然现在gbox还处于早期开发中,并不能用到实际的项目中去,但是里面的一些算法,还是很有参考学习价值的。。
我这两天没事就拿出来分享下,如果有感兴趣的同学,可以直接阅读源码:monotone.c
毕竟这个算法我陆陆续
继续阅读 »
之前xmake默认编译windows目标,debug模式下采用的是-Z7编译选项,内置的调试符号信息到obj文件里面
但是这种方式按msdn的文档上说,是属于旧式的调试符号文件格式,所以为了考虑后续的兼容性,xmake修改了默认的调试符号生成规则,
改为默认启用pdb符号文件,并且pdb的方式更为常用。。
这个行为的修改,并不会影响到xmake.lua的设置,如果在这个文件中,设置了启用调试符号:
lua
set_symbols("debug")
那么,编译debug版本的目标时,就会自动生成pdb文件,以tbox为例:
bash
$ xmake f -m debug
$ xmake
编译完成后,会自动在build
继续阅读 »
现在xmake在windows下,也已经支持调试运行了,可以在编译完debug版本的程序后,直接进行调试开发。。
我们继续以tbox工程为例:
bash
$ xmake f -m debug
$ xmake r -d demo
上述命令,先配置了debug模式编译,为了启用pdb调试符号文件的生成,然后自动编译后,调试运行demo程序。。
xmake会在配置的时候,自动检测windows上注册表里面的默认调试器,然后加载我们的目标程序并运行。
一般情况下,加载的是vs自带的vsjitdebugger调试器,当然xmake也支持windbg和ollydbg(做逆向的,这个用的比较多哈。。)
我们试着运行demo中的exc
继续阅读 »
In order to better promote TBOOX open source project development, we decided to adopt a more relaxed, more developer-friendly Apache License 2.0
The tbox and xmake projects have updated to new license.
If you want to known more, please refer to:Apache License 2.0
继续阅读 »
为了更好地促进TBOOX开源项目的发展,我们决定采用更加宽松、对开发者更加友好的Apache License 2.0
目前tbox和xmake已经更新到新的license
详细license说明见:Apache License 2.0
继续阅读 »