Closed
Description
In CME SBE xml, attribute "sinceVersion" of the messageHeader may have a smaller value than attribute "sinceVersion" of the field. For example, "sinceVersion" of the messageHeader is "2", but is "8" of the field "MDEntrySize":
<ns2:message name="MDIncrementalRefreshSessionStatistics35" id="35" description="MDIncrementalRefreshSessionStatistics" blockLength="11" semanticType="X" sinceVersion="2">
<field name="TransactTime" id="60" type="uInt64" description="Start of event processing time in number of nanoseconds since Unix epoch" offset="0" semanticType="UTCTimestamp"/>
<field name="MatchEventIndicator" id="5799" type="MatchEventIndicator" description="Bitmap field of eight Boolean type indicators reflecting the end of updates for a given Globex event" offset="8" semanticType="MultipleCharValue"/>
<group name="NoMDEntries" id="268" description="Number of entries in Market Data message" blockLength="24" dimensionType="groupSize">
<field name="MDEntryPx" id="270" type="PRICE" description="Market Data entry price" offset="0" semanticType="Price"/>
<field name="SecurityID" id="48" type="Int32" description="Security ID " offset="8" semanticType="int"/>
<field name="RptSeq" id="83" type="uInt32" description="MD Entry sequence number per instrument update" offset="12" semanticType="int"/>
<field name="OpenCloseSettlFlag" id="286" type="OpenCloseSettlFlag" description="Flag describing IOP and Open Price entries" offset="16" semanticType="int"/>
<field name="MDUpdateAction" id="279" type="MDUpdateAction" description="Market Data update action " offset="17" semanticType="int"/>
<field name="MDEntryType" id="269" type="MDEntryTypeStatistics" description="Market Data entry type " offset="18" semanticType="char"/>
<field name="MDEntrySize" id="271" type="Int32NULL" description="Indicative Opening Quantity " offset="19" sinceVersion="8" semanticType="Qty"/>
</group>
</ns2:message>
But in OtfExample (cpp), messageTokens is decoded by templateId and actingVersion :
std::shared_ptr<std::vector<Token>> messageTokens = irDecoder.message(templateId, actingVersion);
and the actingVersion must equal to the value of the attribute "sinceVersion" of messageHeader:
if (token.signal() == Signal::BEGIN_MESSAGE && token.fieldId() == id && token.tokenVersion() == version)
{
result = tokens;
}
That causes the massges with new fields and higher actingVersion cannot be specified correctly. So I wander whether the condition above should be:
token.tokenVersion() <= version
Metadata
Metadata
Assignees
Labels
No labels