前面已经介绍了大部分FAST数据类型和操作符的解析方法,认真看完的话就可以自己去实现一个FAST数据解析工具了,然而实际上并没有必要重新造轮子。
开源的FAST协议解析库有quickfast以及mFAST,都是用c++开发的
根据mFAST的文档来看,mFAST性能要比quickfast好一些。
从编译依赖库来看,两者都需要用到boost库的一些hpp文件,quickfast还需要一些别的东西,mFAST需要依赖tinyxml2。
综上,建议使用mFAST。
mFAST编译
|
|
先将代码clone到本地,然后进入到mFast目录,创建build文件夹。
|
|
去http://www.boost.org/下载boost库,解压到/usr目录下,设置BOOST_ROOT环境变量
|
|
进入刚刚创建的build目录,执行
|
|
接下来就是漫长的编译过程,如果是多核的话可以使用make -j8加速编译。
在 mFast/build/lib/目录下的4个静态库就是最终成果了,另外在 mFast/build/example/目录下有示例程序,对应示例程序的原码在 mFAST/examples/
以上是Linux下的mFast编译过程,需要用到CMake。
在Windows下也差不多,不过Windows下就不止需要用到boost的hpp文件了,还需要boost的库,因此需要先编译一遍boost再去用CMake生成vs的sln解决方案文件,然后用vs编译即可。
在文档的末尾也给了一个简单的CMake file示例。
在 mFAST/build/bin/下有一个程序fast_type_gen-1.3.0,用来将fast模板文件转换为mFast可识别的头文件,似乎用include头文件的方式效率会比直接读取xml模板文件高一些。
使用mFast进行解码
hello_world
这是example里最简单的例子,源代码就一个cpp文件,位于 mFAST/examples/hello_world/hello_world.cpp
|
|
其中需要注意的是
|
|
FAST数据流里是有多条消息的,因此每次调用这个方法会转换出一条消息,并且会将start指针向后偏移到下一条消息开始的位置,因此需要循环调用该方法,直到start==end
|
|
以上就是最基础的mFAST使用方法。