Re: [Quickfix-developers] Issue in parsing FIX44 Message - MsgTyp=n
Brought to you by:
orenmnero
From: Tan W. H. <wen...@bu...> - 2009-11-23 01:08:59
|
Yes. I loaded the FIX44 (Quickfix-1.12.4) dict object & pass it to the Message constructor before callilng the Message::setString(...) method to perform the parsing. As I understand it, the QF parser would separate the message fields into 3 categories, as specified in the dict: 1) HEADER 2) BODY/MESSAGE 3) TRAILER My debugging session shows that the Message::extractField(...) only looks into the BODY list for the field length, which always fail as tag 212 & 213 is catagerized as HEADER as per the FIX spec. Is this a bug ? Thanks, wh >>> Dale Wilson <wi...@oc...> 11/20/2009 11:58:02 PM >>> Are you passing a data dictionary as well as the string? QuickFIX needs the data dictionary to know that XmlDataLen is the length field for XmlData. Dale Tan Weng Heng wrote: > QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html > QuickFIX Support: http://www.quickfixengine.org/services.html > > Hi All, > > Is this a known issue in QuickFix ? > > Whenever I pass the Message class a string with the following C++ > string: > > "8=FIX.4.4\0019=73\00135=n\00149=BRKR\00156=INVMGR\00134=235\00152=19980604-07:58:28\001212=14\001213=<R>A=B\001C=D</R>\00110=235\001" > > It's unable to extract XmlData(213) properly if the contents contains > embeded SOH characters, eventhough XmlDataLen(212) has specified its > length accordingly. > > The Message::extractField method seems to only check the availability > of the "length field" i.e XmlDataLen(212) in the BODY fields, ignoring > the HEADER fields. > > Please correct me if I'm wrong. > > Thanks, > wh > > --------------START Code Excerpt-------------------------- > if ( pDD && pDD->isDataField(field) ) > { > std::string fieldLength; > // Assume length field is 1 less. > int lenField = field - 1; > // Special case for Signature which violates above assumption. > if ( field == 89 ) lenField = 93; > > if ( pGroup && pGroup->isSetField( lenField ) ) > { > fieldLength = pGroup->getField( lenField ); > soh = equalSign + 1 + atol( fieldLength.c_str() ); > } > else if ( isSetField( lenField ) ) > { > fieldLength = getField( lenField ); > soh = equalSign + 1 + atol( fieldLength.c_str() ); > } > ///****NO LOGIC TO LOOK INTO the HEADER FIELDS**** > --------------END Code Excerpt -------------------------- > > > DISCLAIMER: > > This e-mail (including any attachments) may contain confidential information. If you are not the intended recipient, you are hereby notified that any review, distribution, printing, copying or use of this e-mail is strictly prohibited. If you have received this e-mail in error, please notify the sender or Bursa Malaysia immediately and delete the original message. Opinions, conclusions and other information in this e-mail that do not relate to the official business of Bursa Malaysia and/or its group of companies ("Bursa Malaysia Group") shall be understood as neither given nor endorsed by Bursa Malaysia Group and Bursa Malaysia Group accepts no responsibility for the same. All liability arising from or in connection with computer viruses and/or corrupted e-mails is excluded to the fullest extent permitted by law. > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Quickfix-developers mailing list > Qui...@li... > https://lists.sourceforge.net/lists/listinfo/quickfix-developers > DISCLAIMER: This e-mail (including any attachments) may contain confidential information. If you are not the intended recipient, you are hereby notified that any review, distribution, printing, copying or use of this e-mail is strictly prohibited. If you have received this e-mail in error, please notify the sender or Bursa Malaysia immediately and delete the original message. Opinions, conclusions and other information in this e-mail that do not relate to the official business of Bursa Malaysia and/or its group of companies ("Bursa Malaysia Group") shall be understood as neither given nor endorsed by Bursa Malaysia Group and Bursa Malaysia Group accepts no responsibility for the same. All liability arising from or in connection with computer viruses and/or corrupted e-mails is excluded to the fullest extent permitted by law. |