Imported from previous forum
I’m trying to implement a FAST decoder for CME. I’m wondering if the pmap always has a fixed length of 1 or 2 byte or do I need to determine from stop bit everytime? thx!
Hello Daniel,
pmap will not have a fixed length of 1 or 2 bytes, it’s length depends on the number of fields in message that needs pmap bit to be present. We need to determine from stop bit everytime.
You can refer 1.1 spec doc: Section 10.5 Presence Map:
“A presence map is represented as a stop bit encoded entity. Logically a presence map has an infinite suffix of zeroes. This makes it possible to truncate a presence map that ends in a sequence where the bits are all zero. The length of the remaining part must be a multiple of seven.”
Suppose, in one message, total 7 fields need pmap, then pmap length will be one byte (1 stop bit and 7 pmap bit). e.g. 10011011
If in second message, 10 fields need pmap, then pmap length will be 2 bytes. e.g. 00011011 10010000
Now in third message, 21 fields need pmap, and last 7 fields are having pmap bit as 0 (from encoder side), then PMAP in wire will be 01100111 10011011. For last 7 fields, pmap bit will be taken implicitly as 0 in decoder side.
Regards
Shashank
I’m trying to implement a FAST decoder for CME. I’m wondering if the
pmap always has a fixed length of 1 or 2 byte or do I need to determine
from stop bit everytime? thx!
Hi Shashank,
that’s very helpful, thanks! Daniel
Hello Daniel,
pmap will not have a fixed length of 1 or 2 bytes, it’s length depends
on the number of fields in message that needs pmap bit to be present. We
need to determine from stop bit everytime.You can refer 1.1 spec doc: Section 10.5 Presence Map: “A presence map
is represented as a stop bit encoded entity. Logically a presence map
has an infinite suffix of zeroes. This makes it possible to truncate a
presence map that ends in a sequence where the bits are all zero. The
length of the remaining part must be a multiple of seven.”Suppose, in one message, total 7 fields need pmap, then pmap length will
be one byte (1 stop bit and 7 pmap bit). e.g. 10011011 If in second
message, 10 fields need pmap, then pmap length will be 2 bytes. e.g.
00011011 10010000 Now in third message, 21 fields need pmap, and last 7
fields are having pmap bit as 0 (from encoder side), then PMAP in wire
will be 01100111 10011011. For last 7 fields, pmap bit will be taken
implicitly as 0 in decoder side.Regards Shashank
I’m trying to implement a FAST decoder for CME. I’m wondering if the
pmap always has a fixed length of 1 or 2 byte or do I need to
determine from stop bit everytime? thx!
You are welcome Deniel,
Anyway, I am also working on CME Group FAST Decoder, currently in CME FIX/FAST v2.0. Already old version of decoder is functioning in production enviornment for us.
Thanks & Regards
Shashank
Hi Shashank, that’s very helpful, thanks! Daniel
Hello Daniel,
pmap will not have a fixed length of 1 or 2 bytes, it’s length depends
on the number of fields in message that needs pmap bit to be present.
We need to determine from stop bit everytime.You can refer 1.1 spec doc: Section 10.5 Presence Map: “A presence map
is represented as a stop bit encoded entity. Logically a presence map
has an infinite suffix of zeroes. This makes it possible to truncate a
presence map that ends in a sequence where the bits are all zero. The
length of the remaining part must be a multiple of seven.”Suppose, in one message, total 7 fields need pmap, then pmap length
will be one byte (1 stop bit and 7 pmap bit). e.g. 10011011 If in
second message, 10 fields need pmap, then pmap length will be 2 bytes.
e.g. 00011011 10010000 Now in third message, 21 fields need pmap, and
last 7 fields are having pmap bit as 0 (from encoder side), then PMAP
in wire will be 01100111 10011011. For last 7 fields, pmap bit will be
taken implicitly as 0 in decoder side.Regards Shashank
I’m trying to implement a FAST decoder for CME. I’m wondering if the
pmap always has a fixed length of 1 or 2 byte or do I need to
determine from stop bit everytime? thx!