FAST协议是一个国际标准的用于金融信息交换的协议,像国内沪深市场的行情快照信息就是通过FAST协议压缩并进行传输的。
其余介绍也就不多说了,一般人闲着没事也不会去了解这个协议。
FAST协议文档英文原版
FAST协议文档中文翻译
模板文件
FAST协议无论是解码还是编码都需要有模板,并且编解码的模板需要统一。模板文件是一个xml格式的文本文件,里面包含了多个模板。
https://static.xuanyu.li/template.xml
这是一个完整模板文件的一部分,节选这部分是因为数据类型和操作符比较齐全,数据类型包含了string、byteVector、uInt64、decimal、sequence,操作符包含了copy、tail、default、delta。下面FAST二进制流也会基于这个模板。
PMAP
PMAP全称presence map,叫做占位图或者存在图。位于FAST二进制数据流的头部,用来标识模板里的某个字段是否在FAST流中出现,但并不是每个字段都需要在PMAP中标明是否出现,需要根据presence值和操作符两者才能判断该字段是否在PMAP中占位,另外有一点是模板ID是一定占位的,具体规则如下:
操作符 | 必须 | optional可选 |
---|---|---|
无 | 不占用 | 不占用 |
constant | 不占用 | 占用 |
copy | 占用 | 占用 |
default | 占用 | 占用 |
delta | 不占用 | 不占用 |
increment | 占用 | 占用 |
tail | 占用 | 占用 |
像下面这样
|
|
字段id为55,名称是Symbol,操作符为default,在PMAP中占位。
另外对于sequence重复组类型,每个重复组都会有自己单独的PMAP,用来标识重复组内的字段是否出现。