我在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'然后逐个读取字节,是否正确?我曾经认为我应该逐个读取字节并删除停止位
帮助我,我如何解析一个'序列'正确地
答案 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