i seem to be having a problem handling repeating groups (NoQuoteEntries) =
as also groups nested within groups.
for the message type "MassQuote" i am getting the following output:=20
<20040813-12:05:59, FIX.4.4:TW->CLIENT1, incoming>
(8=3DFIX.4.4
9=3D128?35=3Di
34=3D57
49=3DCLIENT1
52=3D20040813-12:05:59.000
56=3DTW=20
117=3DID1
295=3D2
299=3DID
299=3DID3
=
296=3D2?302=3DID2?304=3D2?295=3D2?302=3DID4?304=3D2?295=3D2?10=3D041?)
<20040813-12:05:59, FIX.4.4:TW->CLIENT1, event>
(Message 57 Rejected: Tag not defined for this message type:295)
<20040813-12:05:59, FIX.4.4:TW->CLIENT1, outgoing>
(8=3DFIX.4.4
9=3D120
35=3D3
34=3D57
49=3DTW
52=3D20040813-12:05:59.000
56=3DCLIENT1
45=3D57
58=3DTag not defined for this message type
371=3D295
372=3Di
373=3D2
10=3D249)
The client side code is as follows:
FIX44::MassQuote Application::queryMassQuote44()
{
FIX44::MassQuote massQuote(queryQuoteID());
massQuote.set( queryNoQuoteSets() );
=20
FIX44::MassQuote::NoQuoteSets noQuoteSetsGroup;
=20
noQuoteSetsGroup.set( queryQuoteSetID () );
noQuoteSetsGroup.set( queryTotNoQuoteEntries() );
noQuoteSetsGroup.set( queryNoQuoteEntries() );
massQuote.addGroup( noQuoteSetsGroup );
=20
FIX44::MassQuote::NoQuoteSets::NoQuoteEntries noQuoteEntriesGroup;
noQuoteEntriesGroup.set(queryQuoteEntryID () );
noQuoteSetsGroup.addGroup( noQuoteEntriesGroup );
noQuoteSetsGroup.set( queryQuoteSetID () );
noQuoteSetsGroup.set( queryTotNoQuoteEntries() );
noQuoteSetsGroup.set( queryNoQuoteEntries() );
massQuote.addGroup( noQuoteSetsGroup );
noQuoteEntriesGroup.set(queryQuoteEntryID () );
noQuoteSetsGroup.addGroup( noQuoteEntriesGroup );
queryHeader( massQuote.getHeader() );
return massQuote;
}
the server side code is as follows:
void Application::onMessage( const FIX44::MassQuote& message,
const FIX::SessionID& sessionID )
{
FIX::QuoteID quoteID;
FIX::NoQuoteSets noQuoteSets;
=20
message.get( quoteID );
message.get( noQuoteSets );
FIX44::MassQuote::NoQuoteSets noQuoteSetsGroup;
FIX::QuoteSetID quoteSetID;
FIX::TotNoQuoteEntries totNoQuoteEntries;
FIX::NoQuoteEntries noQuoteEntries;
message.getGroup(1, noQuoteSetsGroup);
noQuoteSetsGroup.getField( quoteSetID );
noQuoteSetsGroup.getField( totNoQuoteEntries );
noQuoteSetsGroup.getField( noQuoteEntries );
FIX44::MassQuote::NoQuoteSets::NoQuoteEntries noQuoteEntriesGroup1;
FIX::QuoteEntryID quoteEntryID;
message.getGroup(1, noQuoteEntriesGroup1);
noQuoteEntriesGroup1.getField( quoteEntryID );
=20
message.getGroup(2, noQuoteSetsGroup);
noQuoteSetsGroup.getField( quoteSetID );
noQuoteSetsGroup.getField( totNoQuoteEntries );
noQuoteSetsGroup.getField( noQuoteEntries );
FIX44::MassQuote::NoQuoteSets::NoQuoteEntries noQuoteEntriesGroup2;
message.getGroup(1, noQuoteEntriesGroup2);
noQuoteEntriesGroup2.getField( quoteEntryID );
=20
FIX44::MassQuoteAcknowledgement massQuoteAcknowledgement =3D =
FIX44::MassQuoteAcknowledgement
( FIX::QuoteStatus( 0 ));
try
{
FIX::Session::sendToTarget( massQuoteAcknowledgement, sessionID );
}
catch ( FIX::SessionNotFound& ) {}
}
|