Re: [Quickfix-developers] Default validation too aggressive?
Brought to you by:
orenmnero
|
From: Oren M. <or...@qu...> - 2005-09-06 17:25:45
|
Well the only time repeated tags are allowed is within the context of a =
repeating group. The thing with repeating groups is that they can only =
be parsed if a data dictionary is present. This is because the parser =
needs to know which fields constitute the begining of a group, what =
field is the delimiter, and what order all the fields need to be in. If =
there is no data dictionary, then the parser must assume that the =
repeated tag is being placed inside the message body outside of the =
context of a repeating group. This is not allowed, and would =
furthermore confuse the parser, so the message is rejected.
--oren
----- Original Message -----=20
From: Brian McAndrews=20
To: qui...@li...=20
Sent: Tuesday, September 06, 2005 11:53 AM
Subject: [Quickfix-developers] Default validation too aggressive?
I had an app running without UseDataDictionary=3D false. However, I =
was missing messages with repeated tags. The problem occurs inside the =
DataDictionary validate call stack. Here's a partial listing of the =
iterate method:
=20
void DataDictionary::iterate( const FieldMap& map, const MsgType& =
msgType )
{ QF_STACK_PUSH(DataDictionary::iterate)
=20
int lastField =3D 0;
=20
FieldMap::iterator i;
for ( i =3D map.begin(); i !=3D map.end(); ++i )
{
const FieldBase& field =3D i->second;
if( i !=3D map.begin() && (field.getField() =3D=3D lastField) )
throw RepeatedTag( lastField ); =20
=20
=20
note, that with repeated tags, the throw RepeatedTag will get called. =
Isn't this a bit harsh not to allow repeated tags when not using a =
DataDictionary? Or am I missing something more fundamental?
=20
Thanks
|