如何解码FAST协议中的序列

时间:2017-01-07 14:08:14

标签: java fix-protocol fast-protocol

我在FAST Message中遇到了一些问题
例如我有下一个模板xml

private Body createPhysicsObjectFromGraphics(TextureRegion region,
                                             Vector2 position, BodyDef.BodyType bodyType) {
    BodyDef boxBodyDef = new BodyDef();
    boxBodyDef.type = bodyType;
    boxBodyDef.position.x = position.x/BOX2D_TO_CAMERA_;
    boxBodyDef.position.y = position.y/BOX2D_TO_CAMERA_;
    Body boxBody = world.createBody(boxBodyDef);
    PolygonShape boxPoly = new PolygonShape();
    boxPoly.setAsBox(region.getRegionWidth()/(2*BOX2D_TO_CAMERA_),
            region.getRegionHeight()/(2*BOX2D_TO_CAMERA_));
    FixtureDef fixtureDef = new FixtureDef();
    fixtureDef.shape = boxPoly;
    fixtureDef.density=1;
    fixtureDef.restitution=0.2f;
    boxBody.createFixture(fixtureDef);
    boxPoly.dispose();
    boxBody.setUserData(region);
    return boxBody;
}

首先我得到模板的PMap,下一步我得到模板ID之后我逐个读取字节,一切正常,但如果我得到序列' MDEntries'我的数据不正确,因为字节序列将被破坏。

我看到下一张带有快速消息结构的图片,并认为我应该阅读序列和长度的PMap' NoMDEntries'然后逐个读取字节,是否正确?我曾经认为我应该逐个读取字节并删除停止位 FAST Message structure

帮助我,我如何解析一个'序列'正确地

1 个答案:

答案 0 :(得分:0)

根据 FAST 协议规范,如果序列中没有需要 PMap 位存在的字段(如您的情况),则 PMap 不应出现在流中。 要了解字段是否需要 PMap 位存在,您可以使用下表:

             | PMap Bit is required
-----------------------------------
Operator     | Mandatory | Optional
-----------------------------------
None         | no        | no
<constant/>  | no        | yes
<copy/>      | yes       | yes
<default/>   | yes       | yes
<delta/>     | no        | no
<increment/> | yes       | yes
<tail/>      | yes       | yes

您可以参考本文档中的第 10.5 段和附录 3.3.1:http://ftp.moex.com/pub/FAST/ASTS/docs/FAST%20Specification1_1.pdf