[This message was posted by David Rosenborg of Pantor Engineering AB <[email protected]> to the "FAST Protocol" discussion forum at http://fixprotocol.org/discuss/46. You can reply to it on-line at http://fixprotocol.org/discuss/read/2fd56c53 - PLEASE DO NOT REPLY BY MAIL.]
Naresh - Yes, you should reset the dictionary after each block (if that's what's specified for your particular protocol). My comment was about a "single message" taken out of context, which may or may not work depending on the situation. Since your problem description indicated the lack of a previous value for the length preamble, I assumed that this was on of those cases. /David > David > > I am clearing out the dictionary after every (block) read. > > If you are not able to do this then what would happen if a message was > missed or dropped. > > Surely after each block you have to clear the dictionary. > > Naresh > > > Naresh - > > > > There is no such default length. The semantics of an operator on the > > sequence length preamble is no different than the semantics you'd have > > if you applied the same operator to a normal field of type uInt32. > > > > You say that you cut out a single message for playback. This is > > generally not possible with FAST since you lose the previous value > > history. > > > > /David > > > > > > > > > > > Hi Dale > > > > > > Thank you for the response and the behaviour you mentioned below is > > > being used and is inherent in the copy operator I use as below: > > > > > > long segmentLength = copyOperatorForInt(buffer, > > > TypeDefs.NoMDEntries, pmapBits[pmapCounter--]); > > > > > > This same line is working on several other messages. > > > > > > The message in question is a single message that has been cut out of > > > the stream for playback. > > > > > > When I play the single message back via openfast I get the result > > > perfectly. > > > > > > 8=FIXT.1.1,35=W,1128=7,49=SWXGROUP-MDI.P01,56=SWXGROUP- > > > MDC,34=19341,97=N,52=20091028- > > > 05:11:05.849,1021=1,48=CZ0001000749,22=4,268=1 > > > > > > Am confident that I am reading the bytes correctly in my app and > > > have gone through every bit.. > > > > > > As it is a single message there is no prev value in the dictionary. > > > Hence I end up getting the pmap bit zero for the length and when > > > going to check the dictionary it is undefined and no initial value > > > hence ERR D5 (InitialValue NULL and Mandatory) > > > > > > It leads me to suggest that if the pmap bit concludes that the > > > segment length is not in the stream that it should default to a > > > minimum of 1. > > > > > > This is my own interpretation which I prefer not to use but I cant > > > see any other option here. > > > > > > Naresh > > > > > > > And of course when I said "segment" in my message below, I meant > > > > "Sequence". > > > > > > > > Dale > > > > > > > > > Hi Naresh, > > > > > > > > > > > > Is it possible to have a sequence as below where the pmap > > > > > > > bit is set to false for the length of the sequence. > > > > > > > > > > > > > > [sequence name="MDEntries"] [typeRef name="MDIncGrp"/] > > > > > > > [length name="NoMDEntries" id="268"] [copy/] [/length] > > > > > > > [string name="MDUpdateAction" id="279"] [copy value="0"/] > > > > > > > [/string] [!-- > > > > > > > : New --] .... > > > > > > > > > > > > > > The field [length name="NoMDEntries" id="268"] [copy/] > > > > > > > [/length] > > > > > > > > > > > > > > has a false in the pmap bit > > > > > > > > > > > > > > Therefore am not sure who many times to iterate through the > > > > > > > sequence > > > > > > > > > > > > > > > > > The pmap bit associated with a segment applies to the length > > > > > field of the segment. This pmap bit tells you whether the length > > > > > appears on-the- wire. What it means when the length does not > > > > > appear on-the- wire is determined by the operator associated > > > > > with the length field. > > > > > > > > > > In your case the length field of the sequence has a copy > > > > > operator. The zero pmap bit is telling you that the sequence > > > > > length does not appear on-the-wire. Instead you should re-use > > > > > the previous length value from the appropriate dictionary. > > > > > > > > > > Dale > > > > > -- > > > > > Dale Wilson Principal Software Engineer Object Computing, Inc. > > > > > (www.ociweb.com) Lead developer for QuickFAST > > > > > (http:www.quickfast.org) [You can unsubscribe from this discussion group by sending a message to mailto:[email protected]] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Financial Information eXchange" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/fix-protocol?hl=en -~----------~----~----~----~------~----~------~--~---
