Re: [Quickfix-users] .Net Message can't make round trip from Message to string and back to Message
Brought to you by:
orenmnero
From: abaraff <ab...@ra...> - 2011-05-18 19:59:39
|
Creating a Message using the new Message(string) constructor doesn't return an identical message to the original. It modifies and increments a number of things. Executing the following code: public void fromApp(Message msg, SessionID sessionID) { try { string message = msg.ToString(); Message nm = new Message(message); crack(msg, sessionID); try { crack(newMessage, sessionID); } catch (Exception e2) { Debug.WriteLine(e2.ToString()); Debug.WriteLine("orig: " + msg.ToXML()); Debug.WriteLine("new: " + nm.ToXML()); Debug.WriteLine("round trip failed"); } } catch (Exception e) { Debug.WriteLine(e.ToString()); } } Gives the following output: A first chance exception of type 'QuickFix.UnsupportedMessageType' occurred in quickfix_net_messages.dll orig: <message> <header> <field number="8"><![CDATA[FIX.4.2]]></field> <field number="9"><![CDATA[257]]></field> <field number="35"><![CDATA[8]]></field> <field number="34"><![CDATA[2]]></field> <field number="49"><![CDATA[SCTC]]></field> <field number="52"><![CDATA[20110518-19:39:08.402]]></field> <field number="56"><![CDATA[SCT1]]></field> </header> <body> <field number="6"><![CDATA[0.0000]]></field> <field number="11"><![CDATA[SCT20110518-153908_00000]]></field> <field number="14"><![CDATA[0]]></field> <field number="17"><![CDATA[1839597056]]></field> <field number="18"><![CDATA[1]]></field> <field number="20"><![CDATA[0]]></field> <field number="21"><![CDATA[1]]></field> <field number="31"><![CDATA[0.0000]]></field> <field number="32"><![CDATA[0]]></field> <field number="37"><![CDATA[110518-193902-3]]></field> <field number="38"><![CDATA[200]]></field> <field number="39"><![CDATA[0]]></field> <field number="40"><![CDATA[1]]></field> <field number="54"><![CDATA[1]]></field> <field number="55"><![CDATA[IBM]]></field> <field number="58"><![CDATA[SCT20110518-153908_00000]]></field> <field number="59"><![CDATA[0]]></field> <field number="60"><![CDATA[20110518-19:39:02.590]]></field> <field number="150"><![CDATA[0]]></field> <field number="151"><![CDATA[200]]></field> </body> <trailer> <field number="10"><![CDATA[058]]></field> </trailer> </message> new: <message> <header> <field number="8"><![CDATA[FIX.4.2]]></field> <field number="9"><![CDATA[258]]></field> <field number="35"><![CDATA[8]]></field> <field number="34"><![CDATA[71]]></field> <field number="49"><![CDATA[DBSI]]></field> <field number="52"><![CDATA[20110518-19:39:02.591]]></field> <field number="56"><![CDATA[SCTC]]></field> </header> <body> <field number="6"><![CDATA[0.0000]]></field> <field number="11"><![CDATA[SCT20110518-153908_00000]]></field> <field number="14"><![CDATA[0]]></field> <field number="17"><![CDATA[1839597056]]></field> <field number="18"><![CDATA[1]]></field> <field number="20"><![CDATA[0]]></field> <field number="21"><![CDATA[1]]></field> <field number="31"><![CDATA[0.0000]]></field> <field number="32"><![CDATA[0]]></field> <field number="37"><![CDATA[110518-193902-3]]></field> <field number="38"><![CDATA[200]]></field> <field number="39"><![CDATA[0]]></field> <field number="40"><![CDATA[1]]></field> <field number="54"><![CDATA[1]]></field> <field number="55"><![CDATA[IBM]]></field> <field number="58"><![CDATA[SCT20110518-153908_00000]]></field> <field number="59"><![CDATA[0]]></field> <field number="60"><![CDATA[20110518-19:39:02.590]]></field> <field number="150"><![CDATA[0]]></field> <field number="151"><![CDATA[200]]></field> </body> <trailer> <field number="10"><![CDATA[123]]></field> </trailer> </message> round trip failed Many of the header values have been changed: Field 9 from 257 to 258. Field 34 from 2 to 71. Field 49from "SCTC" to "DBSI" Field 52 from 20110518-19:39:08.402 to CDATA[20110518-19:39:02.591 Is this intended behavior? If so then why? It seems exceptionally counter intuitive that an object constructor should selectively modify data supplied to its constructor. Thanks, Anthony Not that it matters, but I'm attempting to persist the messages then push them back through my application to restore state since there is no inbuilt mechanism within QuickFIX. -- View this message in context: http://old.nabble.com/.Net-Message-can%27t-make-round-trip-from-Message-to-string-and-back-to-Message-tp31640827p31650349.html Sent from the QuickFIX - User mailing list archive at Nabble.com. |