[This message was posted by Dale Wilson of Object Computing, Inc <[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/3dc85af3 - PLEASE DO NOT REPLY BY MAIL.]
> > But Rolf, an example, please define the semantics of an "empty" > > integer and add the reason why you would even consider adding > > all three : a PMAP, template instance and optional attribute > > on top of it? Plus you make it nullable and optional and empty > > and pmap dependent and hey dynamically imposable. > Is this a trick question or are you just trying to be funny at my expense? > I don't understand what you want to say. You loose me halfway through the > first sentence (at the "and"). I'll take these five lines apart when I get > some more time. If I find a plausible interpretation, I will certainly post. > In the meantime, I would appreciate if you re-read your own text and if > possible try to explain what you are getting at here. Your own > deconstruction if the 5 lines may be helpful. On the assumption that a clearer explanation is not likely to be forthcoming I'd like to discuss this issue. The original poster apparently doesn't understand the difference between sending the value of a field on the wire and including the field in the application message that is generated as a result of decoding a FAST message -- or more likely he doesn't think this distinction is important. I'm guessing that he would prefer to use a "null value" in the application message generated by the decoding process rather than omitting the entry altogether. Several protocols take this approach including Ouch/Itch, and the original ARCA market data protocol. The use of "magic numbers" is a technique commonly used by inexperienced programmers. It can also be used by experienced programmers in very specific cases where a null value is readily available. It is not suitable for use in a general-use protocol because there are many circumstances in which no convenient null value exists. If you consider FAST as a general purpose protocol that avoids imposing arbitrary restrictions on the data being transmitted, then using a null value in the application data is inappropriate. If you consider FAST as a limited-purpose protocol intended to address just one application domain -- the distribution of market data -- then it might make sense to impose artificial restrictions on the type of data that can be transmitted. This in turn could simplify the protocol making it more understandable to inexperienced programmers. I believe that is what the original poster is advocating: simplicity over completeness. This simplification of the protocol would not necessarily simplify the code necessary to encode/decode and process messages because at some point the "missing" data would have to be detected and handled. As an aside, it is interesting that the original post mentioned SOAP as a failing, complex protocol. SOAP (the 'S' at one point stood for for "Simple") was originally proposed as an alternative to more complete and hence more complex protocols like CORBA. It was only when SOAP encountered "real-world" problems that it slowly evolved into a more complete system that rivals or exceeds CORBA in complexity without even coming close to matching it in efficiency. The moral is beware of simplistic solutions to inherently complex problems (and vice versa.) In this attempt to make sense and salvage something useful from the original post, I have read into his statement quite a bit of meaning that isn't expressed by the original post. It might also be worthwhile to take the original at face value. It may be that he truly doesn't grasp that the PMAP and the presence="optional" attribute address different issues. This misunderstanding may be a symptom of a weakness in the description of the protocol: the overloading of the word "presence." The specification would be easier to understand if a separate word had been used to express the condition that the field is not required in the application data. This is something that could be addressed in FAST 1.2 (or beyond) by renaming the presence="" attribute to avoid confusion between it and the "presence map." For example, if this attribute of a field instruction were specified in the XML file as required="no" it might reduce the potential for confusion. Once again, however, this is a cosmetic issue that doesn't affect the underlying value of the protocol. It is also worth noting that the meaning of a presence map bit is not completely consistent. In all but one case the presence map bit specifies whether there is any data on the wire for this particular field. In these cases the presence map bit bears no relationship to the presence or absence of the field in the application message. The exception is for the constant operator. For this operator the data is NEVER sent down the wire, and the presence map bit for this one case indicates whether the field is included in the application data. This overloading of the meaning of the presence map bit, while certainly understandable, may also be a source of the original poster's confusion. Dale -- Principal Software Engineer, Object Computing, Inc. www.ociweb.com Lead developer of the QuickFAST open source implementation of the FAST protocol. 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.
