RE: [Quickfix-developers] NoRelatedSym Class
Brought to you by:
orenmnero
From: Mike H. <mi...@an...> - 2003-04-30 11:32:03
|
All, Some further testing reveals that without validation (i.e no DataDictionary defined) the acceptor dump of the incoming message appears wrong: sent: <message> <header> <field number=3D"8" value=3D"FIX.4.3"/> <field number=3D"35" value=3D"V"/> </header> <body> <field number=3D"146" value=3D"1"/> <field number=3D"262" value=3D"1"/> <field number=3D"263" value=3D"0"/> <field number=3D"264" value=3D"0"/> <field number=3D"267" value=3D"1"/> <group> <field number=3D"55" value=3D"tsco.l"/> </group> <group> <field number=3D"269" value=3D"0"/> </group> </body> <trailer> </trailer> </message> received(no validation): <message> <header> <field number=3D"8" value=3D"FIX.4.3"/> <field number=3D"9" value=3D"94"/> <field number=3D"35" value=3D"V"/> <field number=3D"34" value=3D"3"/> <field number=3D"49" value=3D"CLIENT1"/> <field number=3D"52" value=3D"20030430-11:21:01"/> <field number=3D"56" value=3D"AM"/> </header> <body> <field number=3D"55" value=3D"tsco.l"/> <field number=3D"146" value=3D"1"/> <field number=3D"262" value=3D"1"/> <field number=3D"263" value=3D"0"/> <field number=3D"264" value=3D"0"/> <field number=3D"267" value=3D"1"/> <field number=3D"269" value=3D"0"/> </body> <trailer> <field number=3D"10" value=3D"224"/> </trailer> </message> It looks like message XML encoding still has bugs for repeating groups ? i ran ethereal over the connection to see if it was the encoding or decoding - looks like it is the encoding: Transmission Control Protocol, Src Port: 46450 (46450), Dst Port: 5001 (5001), Seq: 1717567461, Ack: 1741597886, Len: 116 Source port: 46450 (46450) Destination port: 5001 (5001) Sequence number: 1717567461 Next sequence number: 1717567577 Acknowledgement number: 1741597886 Header length: 32 bytes Flags: 0x0018 (PSH, ACK) 0... .... =3D Congestion Window Reduced (CWR): Not set .0.. .... =3D ECN-Echo: Not set ..0. .... =3D Urgent: Not set ...1 .... =3D Acknowledgment: Set .... 1... =3D Push: Set .... .0.. =3D Reset: Not set .... ..0. =3D Syn: Not set .... ...0 =3D Fin: Not set Window size: 6432 Checksum: 0x9704 (correct) Options: (12 bytes) NOP NOP Time stamp: tsval 250859949, tsecr 245892923 Financial Information eXchange Protocol BeginString (8): FIX.4.3 BodyLength (9): 94 MsgType (35): V MsgSeqNum (34): 3 SenderCompID (49): CLIENT1 SendingTime (52): 20030430-11:21:01 TargetCompID (56): AM NoRelatedSym (146): 1 Symbol (55): tsco.l MDReqID (262): 1 SubscriptionRequestType (263): 0 MarketDepth (264): 0 NoMDEntryTypes (267): 1 MDEntryType (269): 0 CheckSum (10): 224 Frame 2 (66 bytes on wire, 66 bytes captured) The 'on the wire' message doesn't have the group's defined either. Does anyone else see this using the java bindings, FIX43.xml and repeating groups ? =20 Cheers Mike=20 On Wed, 2003-04-30 at 10:52, Mike Hepburn wrote: > Hi Oren, >=20 > i have narrowed this down to being a java problem. I added a validation > test in C++ for the MarketDataRequest message and it passed OK. the XML > data structure (from toXML()) produced by C++ and java is identical. >=20 > Unfortunately there are no java bindings for the DataDictionary class - > so i couldn't repeat the test in java. i considered implementing > DataDictionary::validate via jni but thought something more basic must > be going on. >=20 > in java the data dictionary (FIX43.xml) appears to load OK and validate > other message types (e.g NewOrderSingle's) OK - my next step is to strip > the DataDictionary XML file down to only have the MarketDataRequest to > see if i get further. >=20 >=20 > Cheers > Mike >=20 >=20 > On Mon, 2003-04-28 at 20:13, Oren Miller wrote: > > Yeah. DataDictionary is a good place to start. I would take a look at= the DataDictionaryTestCase. If there is a problem, it will probably be on= e of two things. 1) the XML file is not being loaded correctly2) there is a= problem with the validation itself You can verify #2 by adding some assert= s to the readFromFile test. If you do not detect a problem there, then you= can add tests to checkIsInMessage (test for the code that determines a fie= ld belongs to a message), and checkValidFormat (test for full validation of= a message). You may want to synch up with CVS so that you have the latest = code and tests. If you want to debug or use trace statements instead. I wou= ld recommend creating a DD XML file that only contains the message you are = concerned with. You can then look for problems reading from the file or va= lidating. I prefer, however, to have a failing test that exposes the probl= em before I venture into the code. Let use know if you find anything or if = you need any other! > > pointers. If you are able to provide a small project that can demonst= rate the error, that would allow myself and others to be more active in hel= ping you. Good luck. mike <mi...@an...> wrote:HI Oren, yes, both the ac= ceptor and receiver use the same quickfix library & share the same DataDict= ionary (my app is written uses the java bindings to QF and both statically = load the quickfix library via jni). is there a good place for me to put som= e debug in the source to get to the bottom of this ? is DataDistionary.cpp = a good place to start ? CheersMike-----Original Message----- > > From: Oren Miller [mailto:ore...@ya...]=20 > > Sent: Monday, April 28, 2003 6:31 PM > > To: Mike Hepburn; quickfix > > Subject: RE: [Quickfix-developers] NoRelatedSym Class > >=20 > > Did you link the patched version to the receiving application as well? > >=20 > > Mike Hepburn <mi...@an...> wrote: Hi All, > >=20 > > i also seem to have problems using the group NoRelatedSym in a > > MarketDataRequest message. i have followed the previous threads on this > > but to no avail. > >=20 > > Basically i always get a 'Tag not defined for this message type' for > > Symbol (55). > >=20 > > my setup (Fix4.3, java1.4, QF 1.4.1, linux build gcc3.2) > >=20 > > i've applied the following DataDictionary patches from Oren's previous > > mail (and i have the latest DataDictionary from cvs): > >=20 > > http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/quickfix/quickfix/src/C%= 2b%2b/DataDictionary.h.diff?r1=3D1.10&r2=3D1.11 > > http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/quickfix/quickfix/src/C%= 2b%2b/DataDictionary.cpp.diff?r1=3D1.14&r2=3D1.15 > >=20 > >=20 > > here's my message creation code: > >=20 > >=20 > > org.quickfix.fix43.MarketDataRequest.NoMDEntryTypes marketDataEntryGrou= p > > =3D new org.quickfix.fix43.MarketDataRequest.NoMDEntryType! s(); > >=20 > > MDEntryType mdType =3D new MDEntryType(); > > mdType.setValue(MDEntryType.BID); > >=20 > > marketDataEntryGroup.set(mdType); > >=20 > > org.quickfix.fix43.MarketDataRequest.NoRelatedSym symbolGroup =3D > > new org.quickfix.fix43.MarketDataRequest.NoRelatedSym(); > >=20 > > symbolGroup.set(new Symbol(md.getSymbol())); > >=20 > > SubscriptionRequestType subType =3D new SubscriptionRequestType(); > > subType.setValue(SubscriptionRequestType.SNAPSHOT); > >=20 > > org.quickfix.fix43.MarketDataRequest message =3D > > new org.quickfix.fix43.MarketDataRequest(); > >=20 > > message.set(new MDReqID( md.getID())); > > message.set(subType); > > message.set(new MarketDepth(((Integer)md.getMarketDepth()).intValue()))= ; > > message.addGroup(marketDataEntryGroup); > > message.addGroup(symbolGroup); > >=20 > > send(message, md.getSessionID()); > >=20 > >=20 > > And this is what it looks like prior to being sent: > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > > !=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > >=20 > > Any ideas what could be wrong, Am i doing something stupid ?? > >=20 > > Cheers, > > Mike > >=20 > >=20 > > > ATTACHMENT part 2 application/pgp-signature name=3Dsignature.asc=20 > >=20 > > --------------------------------- > > Do you Yahoo!? > > The New Yahoo! Search - Faster. Easier. Bingo. > >=20 > > --------------------------------- > > Do you Yahoo!? > > The New Yahoo! Search - Faster. Easier. Bingo. > --=20 > ___________________________________________________________________ >=20 > Mike Hepburn Phone: +44 (0)207 749 7900 > Anvil Software Limited Fax: +44 (0)207 749 7916 > 51-53 Rivington Street E-mail: mi...@an... > London EC2A 3SE ef...@ho... >=20 --=20 ___________________________________________________________________ Mike Hepburn Phone: +44 (0)207 749 7900 Anvil Software Limited Fax: +44 (0)207 749 7916 51-53 Rivington Street E-mail: mi...@an... London EC2A 3SE ef...@ho... |