[This message was posted by shwetang shah of siac <[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/aa1f62c3 - PLEASE DO 
NOT REPLY BY MAIL.]

> Oleg, As far as I can recall, there are several points where the feed is
> not FAST compliant.
> 
> 1. It includes a proprietary header and I believe a footer on each
>    message. This would not be the end of the world if the payload was
>    actually compliant.
> 
> 2. The biggest issue is the Quote template. The quote template
>    definition is not constant, it is defined after you process the BBO
>    appendage fid, and based on the value, you can then determine the
>    number of fields that follow. This could be solved by having a
>    template ID for each possible BBO appendage.
> 
> This one was my own creation in the early FAST proof of concept days,
> that is how I coded it to show haw FAST could work on Opra data. It made
> sense at the time, but that was before FAST was formalized.
> 
> 
> Look at the supplied fast_decode.c from Opra, and search for:
> 
>    //decode bbo indicator msg->bboIndicator = fast->decode_u32(fast,
>    BBO_INDICATOR);
> 
>         switch(msg->bboIndicator) {
> 
> This explains it all (if you read 'C' code). The value of BBO_INDICATOR
> determines the number and type of fields that follow, this is not FAST
> compliant.
> 
> I do believe Rolf and some other members of the group are performing a
> more complete survey of the Opra implementation.
> 
> /Daniel


For the point # 1.
As far as I understood the specification of FAST1.1, proprietary header and 
trailer is completely independent of the compliance.  This is application 
specific and does not play any role for the FAST (like UDP packet header has 
nothing to do with FAST).  More over the greatest advantage of the packet 
header is for the network group who wants to check the sequence of the messages 
without decoding the FAST messages.  This header give flexibility and 
information about the sequence number of the 1st message and the number of 
messages/packet, size of the message etc.  This information will be vary 
valuable for the tools like Sniffer where without integrating FAST protocol to 
tools network engineer can analyze the gaps in the packets.  Actually FAST 
working group should consider this idea for the future.

For the point # 2.
OPRA consist of generalize template for all the messages.  FAST engine can 
(must) run without any business knowledge of the message and strictly based on 
the information received from the wire.  So if the FAST 1.1 compliant decoder 
is placed with these messages, it should work.  Later application needs to 
build the state engine to constitute the message based on the information 
received from the FAST engine(decoder/template).

Sample decoder is given as an example and to reconstitute the original message 
to ASCII.  State machine is being used to decode the original message. 

Now going back to the original comments about the compliance.  OPRA uses only 
two different type of operators. 
1. Copy : There is no change from FAST 1.0 to FAT 1.1 spec.  So this operator 
for 1.0 is comply with 1.1
2. increment : There is no change from FAST 1.0 to FAT 1.1 spec.  So this 
operator for 1.0 is comply with 1.1

So if the reference for adding more template IDs for bbo indicator then it is 
incorrect as per the spec as it will make FAST engine from generalize engine to 
OPRA specific.  


I am still looking in the section 10.0 of FAST 1.1 where there are some 
ambiguity which needs to be resolve.  For example, the xml statement doesn’t 
mandate to have the templateIdentifier as the 1st bit of the presence map.
message ::= segment 
segment ::= PresenceMap TemplateIdentifier? (field | segment)* 

 and the other statement where TID is optional as the 1st bit.:

 “A segment has a header consisting of a Presence Map followed by an optional 
Template Identifier. The segment has a template identifier either if it is a 
message segment, or if the segment appears as the result of a dynamic template 
reference instruction. A template identifier is encoded as if a copy operator 
was specified. The operator uses the global dictionary and has an internal key 
common to all template identifier fields. This means that a segment with a 
template identifier does not always contain the template identifier physically. 
However, the first bit in the presence map is allocated by its copy operator.  “

Please let me know if I am misinterpreting the spec.  

-Shwetang

[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
-~----------~----~----~----~------~----~------~--~---

Reply via email to