[Quickfix-developers] Fwd: Problems with MarketDataIncrementalRefresh
Brought to you by:
orenmnero
From: Andre D. <and...@al...> - 2009-06-17 19:14:58
|
Hi All, I'm new with quickfix, but I'm creating a application to read a file with FIX lines. I use the Parser class to validate the message and it's OK. ------------------------------------- 8=FIX.4.4 9=628 35=X 34=2 49=TradingEngineDerivatives01A 52=20080501-03:35:23.379 56=FIXGatewayDerivatives_MD 10016=15977_1 75=20080501 268=5 279=1 269=c 278=1 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIJ09 48=BMFBR7312910 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=034 8=FIX.4.4 9=630 35=X 34=3 49=TradingEngineDerivatives01A 52=20080501-03:35:23.395 56=FIXGatewayDerivatives_MD 10016=14827_105 75=20080501 268=5 279=1 269=c 278=1 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=2 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 279=1 269=b 278=3 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 625=I 279=1 269=c 278=4 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 326=122 279=2 269=d 278=5 55=BGIH09 48=BMFBR7312795 22=8 272=20080501 273=03:35:10 336=TradingSessionID 10=165 ------------------------------------- But when I send to the MessageCracker I have problems. When I try to get the NoMDEntries group I got an error: FieldNotFound. ------------------------------------- // Test if we have the groups FIX44::MarketDataIncrementalRefresh::NoMDEntries noMDEntriesGroup; if( !message.hasGroup( noMDEntriesGroup ) ) { std::cout << "\n\tInvalid Message: no Group\n]\n"; return; } // Read a entry group try { message.getGroup( 1, noMDEntriesGroup ); } catch( FIX::FieldNotFound e ) { std::cout << "\tnoGroup(" << e.field << ")"; continue; } ------------------------------------- Investigating the problem, I try to use the DataDictinary to validate the message: ------------------------------------- DD_FIX44 = new FIX::DataDictionary( "/opt/quickfix/share/quickfix/FIX44.xml" ); try { const std::string& msgTypeValue = message.getHeader().getField( FIX::FIELD::MsgType ); std::string str; DD_FIX44->getFieldName( 22, str ); std::cout << "[ " << str << " ] " << msgTypeValue << " " << DD_FIX44->isMsgField( msgTypeValue, 22 ) << std::endl; DD_FIX44->validate( message ); } catch( FIX::TagNotDefinedForMessage e ) { std::cout << "Problems: [ TagNotDefinedForMessage " << e.field << e.detail << " ]" << std::endl; } OUTPUT: [ SecurityIDSource ] X 0 Problems: [ TagNotDefinedForMessage 22 ] ------------------------------------- The problem is: the tag 22 (SecurityIDSource), present in the FIX messages, is return that is NOT defined for the message. But looking at the XML and the "fix44/MarketDataIncrementalRefresh.h" is defined! So, any one with this problem? Any help? Thanks in advance, Andre B Derraik. ALBD Consulting |