fix/fast协议中PMAP(存在图)和Sequence的解析要点
吴旻
泰岩网络工作室
因为升级的原因,我整理了一个从前的兄弟写的FIX/FAST解析代码。其中一直让我看不懂的是PMAP和Sequence的解法(因为代码事实上是有问题的),我也没找到相关的文档。下载了Quickfast的安装包,费了牛劲安装好,发现更复杂。好在只用到了一点点,算是把这两件事弄明白了。
PMAP可能没有。
这是一个致命的陷阱。一个正常的消息第一个数据就是PMAP,而且这个PMAP的第一个bit就是指后面有没有此消息的TID。正常的消息一定会有PMAP。
但对于Sequence来说,它后面的第一个数据是这个Sequence的长度。再下一个数据可能是PMAP,也可能是正式的数据。有还是没有,判断错了,后面就全错了。
由于找不到相关的文档,只好查Quickfast的代码。Quickfast的代码显示,有没有PMAP是根据这个template中所有的filed是不是可能用到PMAP有关。如果说,这个template中所有的字段都不需要使用PMAP就能判断出来,那就不会有PMAP出现。比如下面的例子:
<sequence name="BidPriceLevel"presence="optional">
<lengthname="NoBidPriceLevel" id="10068"presence="optiona