quickfix-developers Mailing List for QuickFIX (Page 158)
Brought to you by:
orenmnero
You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
|
Feb
(5) |
Mar
(16) |
Apr
(15) |
May
(17) |
Jun
(33) |
Jul
(35) |
Aug
(34) |
Sep
(19) |
Oct
(40) |
Nov
(51) |
Dec
(43) |
| 2003 |
Jan
(45) |
Feb
(79) |
Mar
(124) |
Apr
(121) |
May
(132) |
Jun
(77) |
Jul
(110) |
Aug
(57) |
Sep
(48) |
Oct
(83) |
Nov
(60) |
Dec
(40) |
| 2004 |
Jan
(67) |
Feb
(72) |
Mar
(74) |
Apr
(87) |
May
(70) |
Jun
(96) |
Jul
(75) |
Aug
(147) |
Sep
(128) |
Oct
(83) |
Nov
(67) |
Dec
(42) |
| 2005 |
Jan
(110) |
Feb
(84) |
Mar
(68) |
Apr
(55) |
May
(51) |
Jun
(192) |
Jul
(111) |
Aug
(100) |
Sep
(79) |
Oct
(127) |
Nov
(73) |
Dec
(112) |
| 2006 |
Jan
(95) |
Feb
(120) |
Mar
(138) |
Apr
(127) |
May
(124) |
Jun
(97) |
Jul
(103) |
Aug
(88) |
Sep
(138) |
Oct
(91) |
Nov
(112) |
Dec
(57) |
| 2007 |
Jan
(55) |
Feb
(35) |
Mar
(56) |
Apr
(16) |
May
(20) |
Jun
(77) |
Jul
(43) |
Aug
(47) |
Sep
(29) |
Oct
(54) |
Nov
(39) |
Dec
(40) |
| 2008 |
Jan
(69) |
Feb
(79) |
Mar
(122) |
Apr
(106) |
May
(114) |
Jun
(76) |
Jul
(83) |
Aug
(71) |
Sep
(53) |
Oct
(75) |
Nov
(54) |
Dec
(43) |
| 2009 |
Jan
(32) |
Feb
(31) |
Mar
(64) |
Apr
(48) |
May
(38) |
Jun
(43) |
Jul
(35) |
Aug
(15) |
Sep
(52) |
Oct
(62) |
Nov
(62) |
Dec
(21) |
| 2010 |
Jan
(44) |
Feb
(10) |
Mar
(47) |
Apr
(22) |
May
(5) |
Jun
(54) |
Jul
(19) |
Aug
(54) |
Sep
(16) |
Oct
(15) |
Nov
(7) |
Dec
(8) |
| 2011 |
Jan
(18) |
Feb
(9) |
Mar
(5) |
Apr
(5) |
May
(41) |
Jun
(40) |
Jul
(29) |
Aug
(17) |
Sep
(12) |
Oct
(23) |
Nov
(22) |
Dec
(11) |
| 2012 |
Jan
(8) |
Feb
(24) |
Mar
(5) |
Apr
(5) |
May
(6) |
Jun
(5) |
Jul
(5) |
Aug
(5) |
Sep
(2) |
Oct
(9) |
Nov
(2) |
Dec
(18) |
| 2013 |
Jan
(25) |
Feb
(16) |
Mar
(8) |
Apr
(2) |
May
(16) |
Jun
(17) |
Jul
(2) |
Aug
(13) |
Sep
(3) |
Oct
(4) |
Nov
(1) |
Dec
|
| 2014 |
Jan
(2) |
Feb
|
Mar
(22) |
Apr
(9) |
May
(3) |
Jun
(1) |
Jul
(5) |
Aug
(11) |
Sep
(18) |
Oct
(4) |
Nov
(4) |
Dec
(3) |
| 2015 |
Jan
(2) |
Feb
|
Mar
|
Apr
(3) |
May
(4) |
Jun
(37) |
Jul
|
Aug
(4) |
Sep
(6) |
Oct
(1) |
Nov
(4) |
Dec
(2) |
| 2016 |
Jan
(9) |
Feb
(3) |
Mar
(7) |
Apr
(1) |
May
(8) |
Jun
|
Jul
|
Aug
|
Sep
(7) |
Oct
(3) |
Nov
(16) |
Dec
|
| 2017 |
Jan
(1) |
Feb
(15) |
Mar
(2) |
Apr
(12) |
May
(4) |
Jun
(7) |
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
(23) |
Dec
(8) |
| 2018 |
Jan
(2) |
Feb
(4) |
Mar
(2) |
Apr
(8) |
May
(3) |
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(5) |
Nov
(3) |
Dec
|
| 2020 |
Jan
|
Feb
(4) |
Mar
(3) |
Apr
|
May
|
Jun
|
Jul
(12) |
Aug
(5) |
Sep
(3) |
Oct
(1) |
Nov
|
Dec
(1) |
| 2021 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2026 |
Jan
|
Feb
(2) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Tony W. <ton...@tr...> - 2006-03-30 16:06:10
|
Oren, That is exactly what I need, I guess I should have looked a little further into the documentation. Thank you. Tony Oren Miller wrote: > There is a static method on Session called lookupSession which takes in > a SessionID and returns the Session object. > > --oren > > ----- Original Message ----- > *From:* tony weston <mailto:ton...@ya...> > *To:* qui...@li... > <mailto:qui...@li...> > *Sent:* Wednesday, March 29, 2006 5:19 PM > *Subject:* [Quickfix-developers] initiator.getSession Error > > Hello, > > I'm including quickFix into a VB .Net Express application (using > .Net 2.0). Due to how the particular Fix Server is configured I > need to change the MsgSeqNum, which seems quite easy to do on the > Session object. I'm currently not able to get the session object. > The initiator does not seem to support the "getSession" method. I > am able to access the "getSessions" method but this only seems to > return an array of the SessionIds. Is there something I'm missing > or an alternative way to get the Session object based on the sessionId? > > Thank you, > Tony |
|
From: Oren M. <or...@qu...> - 2006-03-30 16:03:59
|
There is a static method on Session called lookupSession which takes in = a SessionID and returns the Session object. --oren ----- Original Message -----=20 From: tony weston=20 To: qui...@li...=20 Sent: Wednesday, March 29, 2006 5:19 PM Subject: [Quickfix-developers] initiator.getSession Error Hello, I'm including quickFix into a VB .Net Express application (using .Net = 2.0). Due to how the particular Fix Server is configured I need to = change the MsgSeqNum, which seems quite easy to do on the Session = object. I'm currently not able to get the session object. The = initiator does not seem to support the "getSession" method. I am able = to access the "getSessions" method but this only seems to return an = array of the SessionIds. Is there something I'm missing or an = alternative way to get the Session object based on the sessionId? Thank you, Tony |
|
From: Caleb E. <cal...@gm...> - 2006-03-30 13:45:16
|
On 3/29/06, Nicholas Murdock <nic...@ch...> wrote: > > Any ideas? > Not without being a stack trace, no. Sorry. -- Caleb Epstein caleb dot epstein at gmail dot com |
|
From: Belinda I. <Bel...@gb...> - 2006-03-30 05:28:44
|
Hi Everyone, I have the following scenario, the FIX session is not logged on yet (before StartTime) and a message arrives. When the session tries to log on, it is disconnected for the following reason - MsgSeqNum too low, expecting 3 but received 1 Logon I thought that messages that arrived before the session was logged on would be kept and sent after the Logon response was received? Is this the expected behaviour? My quickfix.cfg properties are as follows - [default] DataDictionary=3D/fixItsAdapter/FIX44.xml BeginString=3DFIX.4.4 ConnectionType=3Dinitiator FileStorePath=3D/fixItsAdapter/dataStore ResetOnLogout=3DN ResetOnDisconnect=3DN CheckLatency=3DN [session] SenderCompID=3DCL1_FIX44 TargetCompID=3DASX SocketConnectHost=3Dourhost SocketConnectPort=3D6003 TimeZone=3DAustralia/Brisbane StartTime=3D14:45:00 EndTime=3D00:00:00 HeartBtInt=3D600 Is anyone else having the similar issues? Thanks, Belinda. |
|
From: tony w. <ton...@ya...> - 2006-03-29 23:19:16
|
Hello, I'm including quickFix into a VB .Net Express application (using .Net 2.0). Due to how the particular Fix Server is configured I need to change the MsgSeqNum, which seems quite easy to do on the Session object. I'm currently not able to get the session object. The initiator does not seem to support the "getSession" method. I am able to access the "getSessions" method but this only seems to return an array of the SessionIds. Is there something I'm missing or an alternative way to get the Session object based on the sessionId? Thank you, Tony |
|
From: Oren M. <or...@qu...> - 2006-03-29 18:27:38
|
This is exactly what you should expect. Sequence numbers should never = be moved back unless they sending seqnum is simularly modified on the = other side. This is considered an undefined state where disconnection = is the only option. You are confusing the behavior with what you would = expect to see if you *raised* the accepting sequence number. --oren ----- Original Message -----=20 From: Nick Volpe=20 To: qui...@li...=20 Sent: Wednesday, March 29, 2006 3:55 AM Subject: [Quickfix-developers] Session issue I'm using QF 1.11.0 for Java and FIX 4.2 and am experiencing some odd = behaviour while doing some session level tests.=20 I have an initiator (QuickFIX) and an acceptor (not QuickFix) that I = have started and allowed to exchange heartbeats for a few minutes. I = then stop both of them and set the expected message sequence number of = the acceptor back by 5. I then restart both the initiator and the = acceptor and would expect to see the initiator log onto the acceptor and = then send a sequence reset message, followed by a normal exchange of = heartbeats going forward. However, what actually happens is that after = logging, sending the sequence reset message, and then sending the first = heartbeat (to which the acceptor correctly responds), the initiator then = sends a logout message and the session is terminated. This isn't really = what I'd expect. Any thoughts??=20 Thanks=20 Nik = *************************************************************************= ************************************* This email and any files = transmitted with it are confidential and intended solely for the use of = the individual or entity to whom they are addressed. Any unauthorized = use of the information contained in this email or its attachments is = prohibited. If this email is received in error, please contact the = sender and delete the material from your computer systems. Do not use, = copy, or disclose the contents of this email or any attachments. Abu = Dhabi Investment Authority (ADIA) accepts no responsibility for the = content of this email to the extent that the same consists of statements = and opinions made which are the senders own and not made on behalf of = ADIA. Nor does ADIA accept any liability for any errors or omissions in = the content of this email caused by electronic and technical failures. = Although ADIA has taken reasonable precautions to ensure that no viruses = are present in this email, ADIA accepts no responsibility for any loss = or damage arising from the use of this email or its attachments. = *************************************************************************= ************************************* |
|
From: Nicholas M. <nic...@ch...> - 2006-03-29 16:41:18
|
We have only seen this in production and are unable to attach to the process (we can't reproduct in dev). So, instead of attaching, I put some logging (to the event log) inside the Session class. I put a log at the beginning of Session::next(const Message&, bool) among other places. The results were, after a few hours of trading I get a MassQuote in the incoming fix log but no logging in the event log to represent the next(message, bool) function begin called. As it looks to me (so that I'm not confused about what part of the code is running), the only place anything gets logged to the incoming fix log is in Session::next( const std::string&, bool). So assuming we've made it this far the previous callback has completed and we are no longer inside my code: The parser has pulled a complete message (string) off of the queue and we are processing that. So what happens after m_state.onIncoming(msg) ? Is it possible that something is throwing during the creation of the fix message (from the string) and the exception is getting swallowed in ThreadedSocketConnection::readQueue(). Any ideas? -Nick _____ From: Caleb Epstein [mailto:cal...@gm...] Sent: Thursday, March 23, 2006 9:11 PM To: Nicholas Murdock Cc: quickfix-developers Subject: Re: [Quickfix-developers] Decoder callback not invoked On 3/23/06, Nicholas Murdock <nic...@ch... <mailto:nic...@ch...> > wrote: Using quickfix 1.10.2, ThreadedSocket, after about 3 hours of heavy use the message decoder callback for an incoming message isn't being called. We see the message (mass quote) in the incoming log but the callback isn't invoked. The thread seems to hang as it does not process any further incoming data (the thread pulling data of the socket seems to be working, though, as the client never blocks on send). The server continues to send info back to the client on the same session. What is the ThreadedSocketConnection's m_queueThread, the one that is reading from the m_queue built up by the socket-reading thread, doing? This is the thread from which your callbacks will be fired, so perhaps your Application code has deadlocked? -- Caleb Epstein caleb dot epstein at gmail dot com |
|
From: SPG <ste...@bl...> - 2006-03-29 10:50:39
|
Hi Joerg, Thanks for the reply. I managed to realise I was using the wrong response any way. I need to send a TradeCaptureReportRequestAck when there are results, and that has a field for me to fill in. TradeCaptureReportAck should be sent when no results are found! Cheers, Steve -- View this message in context: http://www.nabble.com/TradeCaptureReportAck---number-of-results--t1361282.html#a3647738 Sent from the QuickFIX - Dev forum at Nabble.com. |
|
From: Joerg T. <Joe...@ma...> - 2006-03-29 10:29:24
|
SPG wrote: > I am creating a TradeCaptureReportAck in response to a > TradeCaptureReportRequest using a date range query. Our spec requires t= hat > we include the number of results (if any) in the TradeCaptureReportAck = so > the client knows how many reports to expect after. >=20 > I have looked at the docs for the TradeCaptureReportAck type, but canno= t > find an obvious candidate for this field. I suggest to post this to the general Q/A forum on www.fixprotocol.org to= increase your=20 chances. This seems to me a quite specific question which is not related = to QuickFIX. But it's OK to post here, and hopefully somebody has the answer for you. My quick browse of the spec showed me a couple of repeating groups, e.g. = TrdRegTimestamps,=20 which could relate to the number of results. I.e. the size of the group i= s the number of=20 results. But I am no expert in this area. Cheers, J=F6rg --=20 Joerg Thoennes http://macd.com Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH Fax : +49 (0)241 44597-10 Lothringer Str. 52, D-52070 Aachen |
|
From: SPG <ste...@bl...> - 2006-03-29 10:07:32
|
Hi, I am creating a TradeCaptureReportAck in response to a TradeCaptureReportRequest using a date range query. Our spec requires that we include the number of results (if any) in the TradeCaptureReportAck so the client knows how many reports to expect after. I have looked at the docs for the TradeCaptureReportAck type, but cannot find an obvious candidate for this field. Any ideas? Steve PS: Newb at FIX, please be patient! -- View this message in context: http://www.nabble.com/TradeCaptureReportAck---number-of-results--t1361282.html#a3647221 Sent from the QuickFIX - Dev forum at Nabble.com. |
|
From: Nick V. <ni...@ad...> - 2006-03-29 09:51:13
|
I'm using QF 1.11.0 for Java and FIX 4.2 and am experiencing some odd behaviour while doing some session level tests. I have an initiator (QuickFIX) and an acceptor (not QuickFix) that I have started and allowed to exchange heartbeats for a few minutes. I then stop both of them and set the expected message sequence number of the acceptor back by 5. I then restart both the initiator and the acceptor and would expect to see the initiator log onto the acceptor and then send a sequence reset message, followed by a normal exchange of heartbeats going forward. However, what actually happens is that after logging, sending the sequence reset message, and then sending the first heartbeat (to which the acceptor correctly responds), the initiator then sends a logout message and the session is terminated. This isn't really what I'd expect. Any thoughts?? Thanks Nik ************************************************************************************************************** This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. Any unauthorized use of the information contained in this email or its attachments is prohibited. If this email is received in error, please contact the sender and delete the material from your computer systems. Do not use, copy, or disclose the contents of this email or any attachments. Abu Dhabi Investment Authority (ADIA) accepts no responsibility for the content of this email to the extent that the same consists of statements and opinions made which are the senders own and not made on behalf of ADIA. Nor does ADIA accept any liability for any errors or omissions in the content of this email caused by electronic and technical failures. Although ADIA has taken reasonable precautions to ensure that no viruses are present in this email, ADIA accepts no responsibility for any loss or damage arising from the use of this email or its attachments. ************************************************************************************************************** |
|
From: Belinda I. <Bel...@gb...> - 2006-03-28 22:42:42
|
Hi Mike, We have a similar issue with the ASX where we have to send a BE User Request directly after the logon before we can send in orders. We are using quickfixj. =20 We have modified Session.java in the quickfixj code and are sending the BE request in nextLogon and added a nextUserResponse. The code that checks for target seq too high was moved from nextLogon to nextUserResponse and this means that a resend request will be sent from within here to send the messages that arrived prior. Another set of booleans was added to SessionState that checks for BE User request and response sent and received. So sendRaw now checks these extra booleans before it sends messages. We're not sure if this is the right way to do this but I can provide further information if you think any of this will help you. Regards, Belinda.=20 -----Original Message----- From: qui...@li... [mailto:qui...@li...] On Behalf Of Mike Smith Sent: Saturday, 25 March 2006 7:48 AM To: qui...@li... Subject: [Quickfix-developers] Wait for additional TraderLogon QuickFIX Documentation: http://www.quickfixengine.org/quickfix/doc/html/index.html QuickFIX Support: http://www.quickfixengine.org/services.html The ICE exchange has a custom message called TraderLogon, which you need to submit immediately after your Logon message. You then get a TraderLogonResponse message back. After this point, you can begin to send your orders in. Right now I'm running into an issue where I have an order queued up, I LOGON to ICE and then my queued order gets sent, before I can send the TraderLogon and get the TraderResponse. I have code right now in the onLogon, which submits my TraderLogon message, but I don't know how to stop the queued messages from being sent until after I receive the TraderResponse message. Any suggestions? Thanks, Mike ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=3Dk&kid=110944&bid$1720&dat=121642 _______________________________________________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers |
|
From: Dave L. <dav...@ma...> - 2006-03-24 23:18:02
|
Hi Mike, Once you've sent a message and it has been queued then it has consumed a sequence number. Messages must be sent in sequence, so QuickFix either has to send it or send a SequenceReset (gap fill) instead. A couple of suggestions: 1) You could check to see if the session is logged, using isLoggedOn() session property, before calling sendToTarget. This will help avoid queuing messages when the connection is down. Although this won't help if you have an abnormal disconnection. 2) You could also throw a DoNotSend exception in the toApp() method for all messages with a PossDupFlag set, this will result in appropriate gap fill messages being sent. You could then resend any orders in new messages, following the TraderLogon. Hope this helps a little. Maybe other have some more suggestions. Have a nice weekend. Cheers Dave > -----Original Message----- > From: qui...@li... > [mailto:qui...@li...] On > Behalf Of Mike Smith > Sent: 24 March 2006 21:48 > To: qui...@li... > Subject: [Quickfix-developers] Wait for additional TraderLogon > > > QuickFIX Documentation: > http://www.quickfixengine.org/quickfix/doc/> html/index.html > > QuickFIX Support: > http://www.quickfixengine.org/services.html > > The ICE exchange has a custom message called TraderLogon, > which you need to submit immediately after your Logon > message. You then get a TraderLogonResponse message back. > After this point, you can begin to send your orders in. > > Right now I'm running into an issue where I have an order > queued up, I LOGON to ICE and then my queued order gets sent, > before I can send the TraderLogon and get the TraderResponse. > I have code right now in the onLogon, which submits my > TraderLogon message, but I don't know how to stop the queued > messages from being sent until after I receive the > TraderResponse message. > > Any suggestions? > > Thanks, > > Mike > > > ------------------------------------------------------- > This SF.Net email is sponsored by xPML, a groundbreaking > scripting language that extends applications into web and > mobile media. Attend the live webcast and join the prime > developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd_____________________________________ __________ Quickfix-developers mailing list Qui...@li... https://lists.sourceforge.net/lists/listinfo/quickfix-developers |
|
From: Mike S. <MS...@rj...> - 2006-03-24 21:47:43
|
The ICE exchange has a custom message called TraderLogon, which you need to submit immediately after your Logon message. You then get a TraderLogonResponse message back. After this point, you can begin to send your orders in. Right now I'm running into an issue where I have an order queued up, I LOGON to ICE and then my queued order gets sent, before I can send the TraderLogon and get the TraderResponse. I have code right now in the onLogon, which submits my TraderLogon message, but I don't know how to stop the queued messages from being sent until after I receive the TraderResponse message. Any suggestions? Thanks, Mike |
|
From: Joerg T. <Joe...@ma...> - 2006-03-24 10:06:26
|
Hi Anshu, > When I try to run quickfix ( 1.9.4 ) on weblogic ( > 6.1) my call hangs at MessageFactory messageFactory =3D > new DefaultMessageFactory(); line .=20 Are you telling us that you use native QuickFIX in an application server?= In that case,=20 there may be classloader issues (see bugtracker). The current QF does not use the Java class loader correctly: http://www.quickfixengine.org/bugtracker/bug.php?op=3Dshow&bugid=3D58&pos= =3D0 Please provide more details, ie logs etc. Cheers, J=F6rg --=20 Joerg Thoennes http://macd.com Tel.: +49 (0)241 44597-24 Macdonald Associates GmbH Fax : +49 (0)241 44597-10 Lothringer Str. 52, D-52070 Aachen |
|
From: Caleb E. <cal...@gm...> - 2006-03-24 03:10:33
|
On 3/23/06, Nicholas Murdock <nic...@ch...> wrote: > > Using quickfix 1.10.2, ThreadedSocket, after about 3 hours of heavy use > the message decoder callback for an incoming message isn't being called. = We > see the message (mass quote) in the incoming log but the callback isn't > invoked. The thread seems to hang as it does not process any further > incoming data (the thread pulling data of the socket seems to be working, > though, as the client never blocks on send). The server continues to send > info back to the client on the same session. > What is the ThreadedSocketConnection's m_queueThread, the one that is reading from the m_queue built up by the socket-reading thread, doing? Thi= s is the thread from which your callbacks will be fired, so perhaps your Application code has deadlocked? -- Caleb Epstein caleb dot epstein at gmail dot com |
|
From: Anshu N. <ans...@ya...> - 2006-03-23 20:33:33
|
Hi ,
When I try to run quickfix ( 1.9.4 ) on weblogic (
6.1) my call hangs at MessageFactory messageFactory =
new DefaultMessageFactory(); line .
Can anybody tell me what could be wrong .
Application app = new FixReceiver(configuration);
SessionSettings settings =
configuration.getFixSessions().getSettings();
MessageStoreFactory messageStoreFactory =
configuration.createMessageStoreFactory();
quickfix.LogFactory logFactory =
configuration.createLogFactory();
MessageFactory messageFactory = new
DefaultMessageFactory();
acceptor = new ThreadedSocketAcceptor(app,
messageStoreFactory, settings, logFactory,
messageFactory);
Thanks in advance.
Regards,
Anshu
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
|
|
From: Nicholas M. <nic...@ch...> - 2006-03-23 19:58:57
|
Using quickfix 1.10.2, ThreadedSocket, after about 3 hours of heavy use the message decoder callback for an incoming message isn't being called. We see the message (mass quote) in the incoming log but the callback isn't invoked. The thread seems to hang as it does not process any further incoming data (the thread pulling data of the socket seems to be working, though, as the client never blocks on send). The server continues to send info back to the client on the same session. Because we see the message in the incoming log we are assuming the previous callback completed successfully. This has happened on multiple binaries, both ThreadedSockerAcceptor and TheadedSocketInitiator. -- -- -- Nicholas Murdock Chicago Trading Company nic...@ch... 312-863-4653 |
|
From: Brad H. <Bra...@gb...> - 2006-03-22 22:36:21
|
Hi Steve,
=20
Here were the two messages:
Input Message -
8=3DFIX.4.4=019=3D171=0135=3DD=0149=3DSenderCompId=0156=3DTargetCompId=01=
11=3D183339=0122=3D8=0138=3D1
=0140=3D2=0144=3D12=0148=3DBHP=0154=3D2=0155=3DBHP=0159=3D1=0160=3D200602=
23-22:38:33=01526=3D3620=01453=3D2=01
448=3D8=01447=3DD=01452=3D4=01448=3DAAA35354=01447=3DD=01452=3D3=0110=3D1=
68=01
Message 2 -
8=3DFIX.4.4=019=3D171=0135=3DD=0149=3DSenderCompId=0156=3DTargetCompId=01=
11=3D183339=0122=3D8=0138=3D1
=0140=3D2=0144=3D12=0148=3DBHP=0154=3D2=0155=3DBHP=0159=3D1=0160=3D200602=
23-22:38:33=01526=3D3620=01453=3D2=01
447=3DD=01448=3D8=01452=3D4=01447=3DD=01448=3DAAA35354=01452=3D3=0110=3D1=
68=01
Thanks,
Brad
(on behalf of Belinda).
________________________________
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Steve Bate
Sent: Wednesday, 22 March 2006 7:47 PM
To: qui...@li...
Subject: RE: [Quickfix-developers] Resending Messages
Hello Belinda,
=20
This appears to be a different problem than Brad was having. Nested
groups are required to be
in order they they described in the specification. My understanding is
that the top level groups=20
are not required to be in any specific order.
=20
There are some strange orderings in the XML output, but it's probably a
side effect of
the XML formatter (which doesn't enforce either group or field ordering
for it's elements).=20
Can you provide the message strings (or at least the input message
string)? It would
help me to investigate the issue more quickly.
=20
Thanks,
=20
Steve Bate
=20
________________________________
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Belinda Ivkovic
Sent: Wednesday, March 22, 2006 2:23 AM
To: qui...@li...
Cc: Brad Harvey
Subject: [Quickfix-developers] Resending Messages
Hi Everyone,=20
We are having some problems resending messages when a resend
request is received. The error we are getting back is as follows -
58=3DREJECT Missing or invalid value for conditionally required
fields in PartyID repeating group.=20
I think the problem may be related to groups not getting copied
in the correct order when the message to be resent is created.
In Session#nextResendRequest the message is created via
'fromString' -=20
Message msg =3D new Message((String) messages.get(i),
dataDictionary);=20
We have done some unit tests to confirm that the order is
different when a message is created via 'fromString'. =20
Here is our validate method, -=20
private void validate(Message message) throws
InvalidMessage {=20
MessageFactory messageFactory =3D new
DefaultMessageFactory(); =20
String msgType =3D
MessageUtils.getMessageType(message.toString());=20
Message message2;=20
message2 =3D
messageFactory.create(dataDictionary.getVersion(), msgType);=20
message2.fromString(message.toString(),
dataDictionary, false);=20
System.out.println("Input Message - " +
message.toXML());=20
System.out.println("Message 2 - " +
message2.toXML());=20
}=20
And here is the output. The group fields are in different order
-=20
Input Message - <?xml version=3D"1.0" encoding=3D"ISO-8859-1"?>=20
<message>=20
<header>=20
<field number=3D"8"><![CDATA[FIX.4.4]]></field>=20
<field number=3D"9"><![CDATA[171]]></field>=20
<field number=3D"35"><![CDATA[D]]></field>=20
<field number=3D"49"><![CDATA[SenderCompId]]></field>=20
<field number=3D"56"><![CDATA[TargetCompId]]></field>=20
</header>=20
<body>=20
<field number=3D"11"><![CDATA[183339]]></field>=20
<field number=3D"22"><![CDATA[8]]></field>=20
<field number=3D"38"><![CDATA[1]]></field>=20
<field number=3D"40"><![CDATA[2]]></field>=20
<field number=3D"44"><![CDATA[12]]></field>=20
<field number=3D"48"><![CDATA[BHP]]></field>=20
<field number=3D"54"><![CDATA[2]]></field>=20
<field number=3D"55"><![CDATA[BHP]]></field>=20
<field number=3D"59"><![CDATA[1]]></field>=20
<field number=3D"60"><![CDATA[20060223-22:38:33]]></field>=20
<field number=3D"526"><![CDATA[3620]]></field>=20
<group>=20
<field number=3D"448"><![CDATA[8]]></field>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"452"><![CDATA[4]]></field>=20
</group>=20
<group>=20
<field number=3D"448"><![CDATA[AAA35354]]></field>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"452"><![CDATA[3]]></field>=20
</group>=20
</body>=20
<trailer>=20
<field number=3D"10"><![CDATA[168]]></field>=20
</trailer>=20
</message>=20
Message 2 - <?xml version=3D"1.0" encoding=3D"ISO-8859-1"?>=20
<message>=20
<header>=20
<field number=3D"8"><![CDATA[FIX.4.4]]></field>=20
<field number=3D"9"><![CDATA[171]]></field>=20
<field number=3D"35"><![CDATA[D]]></field>=20
<field number=3D"49"><![CDATA[SenderCompId]]></field>=20
<field number=3D"56"><![CDATA[TargetCompId]]></field>=20
</header>=20
<body>=20
<field number=3D"11"><![CDATA[183339]]></field>=20
<field number=3D"22"><![CDATA[8]]></field>=20
<field number=3D"38"><![CDATA[1]]></field>=20
<field number=3D"40"><![CDATA[2]]></field>=20
<field number=3D"44"><![CDATA[12]]></field>=20
<field number=3D"48"><![CDATA[BHP]]></field>=20
<field number=3D"54"><![CDATA[2]]></field>=20
<field number=3D"55"><![CDATA[BHP]]></field>=20
<field number=3D"59"><![CDATA[1]]></field>=20
<field number=3D"60"><![CDATA[20060223-22:38:33]]></field>=20
<field number=3D"453"><![CDATA[2]]></field>=20
<field number=3D"526"><![CDATA[3620]]></field>=20
<group>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"448"><![CDATA[8]]></field>=20
<field number=3D"452"><![CDATA[4]]></field>=20
</group>=20
<group>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"448"><![CDATA[AAA35354]]></field>=20
<field number=3D"452"><![CDATA[3]]></field>=20
</group>=20
</body>=20
<trailer>=20
<field number=3D"10"><![CDATA[168]]></field>=20
</trailer>=20
</message>=20
Has anyone else had any issue with this?=20
Any help is appreciated.=20
Regards,=20
Belinda=20
|
|
From: Edde <edd...@gm...> - 2006-03-22 11:55:52
|
Hi Oren, I appologize for the double post. I didn't receive my first post so I didn't think anyone else did either. > You could check the sequence number of the outgoing message against > the next expected outgoing sequence number. I'm not sure if I follow you... For the session in question I currently set the next expected sequence nbr to 1 when the session has succesfully logged on (session.setNextTargetMsgSeqNum(1). This will cause QuickFIX to request a resend of all messages. I'm not sure what you mean by "outgoing message" and "next expected outgoing sequence number". I thought it was the incoming messages that I needed to monitor and somehow check the sequence numbers to determine when the resend has finished? I guess I need to use either <session.getExpectedSenderNum()> or <session.getExpectedTargetNum()> Thanks for your assistance! /Eddie > --oren > > On Mar 21, 2006, at 8:07 AM, Edde wrote: > > > Hi Guys, > > > > I appologize to bother you with this once again... > > > > >Oren wrote: > > >So I suggest that you clear the expected sequence number *before* > > starting the application. > > >That way QuickFIX will allways request a retransmission from 1 > > thru infinity, and since QuickFIX > > >requested the retransmissions it will know what to do with them. > > > > I've now rewritten my application according to this design and it > > seems to work fine. However, I would still like to know if there is > > a way to know when QuickFIX has resent all messages? > > > > >Joerg wrote: > > >BTW, a TestRequest with a unique has to be answered by a Heartbeat > > with this unique id. > > >If you get this specific heartbeat, you know that the other side > > must have processed all > > >messages preceding this TestRequest. Of course, this does not > > prevent further resend > > >processing at any later point of time. > > > > I've tried this approach but unfortunately our counterparty doesn't > > quite live up the FIX specification in this regard. It works great > > most of the time but every now and then our counterparty "forget" > > to answer my TestRequest with the corresponding heartbeat. > > Is there another way to do this? I've noticed that QuickFIX logs > > the following event when the Resend has finished: "ResendRequest > > for messages FROM: 1 TO: XXXX has been satisfied.". Is there a way > > for me to get this message on an application level? > > Another solution I was thinking off was to check for the first > > message where the PossDupFlag isn't set and then assume that the > > Resend is finished but I'm not sure this is a fail proof solution. > > > > Any comments or suggestions will be deeply appreciated. > > Thanks, > > /Eddie > > > > |
|
From: Oren M. <or...@qu...> - 2006-03-22 09:57:13
|
A fix has been checked in for C++, JNI and .NET
--oren
On Mar 22, 2006, at 3:35 AM, Steve Bate wrote:
> Hello Brad,
>
> I've committed a fix for this problem in the QFJ HEAD and added a
> unit test based on your email
> report. It appears the problem also exists in the C++ code. Oren
> will be investigating and making
> any necessary changes there.
>
> Thanks for the report,
>
> Steve Bate
> From: qui...@li...
> [mailto:qui...@li...] On Behalf
> Of Brad Harvey
> Sent: Tuesday, March 21, 2006 5:57 AM
> To: qui...@li...
> Subject: [Quickfix-developers] [qfj] Ordering of nested repeating
> groups in NewOrderCross
>
> Hi Everyone,
>
> I'm having some problems sending a valid NewOrderCross (s) message
> using quickfix/j 1.0.0 beta3. The nested Party group is being
> added at the very end of the Side group, but I need the 38 tag
> (OrderQty) to be after the Party group.
>
> Here's an example of the message that quickfix is outputting.
>
> 8=FIX.4.4
> 9=244
> 35=s
> 34=5
> 49=sender
> 52=20060319-09:08:20.881
> 56=target
> 22=8
> 40=2
> 44=9
> 48=ABC
> 55=ABC
> 60=20060319-09:08:19
> 548=184214
> 549=2
> 550=0
> 552=2
> 54=1
> 38=9
> 453=2
> 448=8
> 447=D
> 452=4
> 448=AAA35777
> 447=D
> 452=3
> 54=2
> 38=9
> 453=2
> 448=8
> 447=D
> 452=4
> 448=aaa
> 447=D
> 452=3
> 10=100
>
> The data dictionary has them specified in the correct order. I can
> see how the ordering of fields within a group is decided:
>
> // from NewOrderCross
> public static class NoSides extends Group {
> public NoSides() {
> super(552, 54,
> new int[] {54, 11, 526, 583, 229, 75, 1, 660, 581, 589,
> 590, 591, 70, 854, 38, 152, 516, 468, 469, 12, 13, 479, 497, 528,
> 529, 582, 121, 120, 775, 58, 354, 355, 77, 203, 544, 635, 377,
> 659, 0 } );
>
> }
>
> But none of the tags in the nested group are in here (453, 448,
> 447, 452). How do we put the nested group in the correct spot?
>
> Many thanks,
> Brad.
>
>
> Here's how we're creating a NoSides group:
>
> // side, brokerCode, bookingRef, unitQty passed in..
>
> NoSides sides = new NoSides();
> sides.set(new Side(side)));
>
> // Add PartyIDs
> quickfix.fix44.NewOrderCross.NoSides.NoPartyIDs
> partyIds =
> new
> quickfix.fix44.NewOrderCross.NoSides.NoPartyIDs();
> partyIds.set(new PartyID(brokerCode));
> partyIds.set(new PartyIDSource
> (PartyIDSource.PROPRIETARY_CUSTOM_CODE));
> partyIds.set(new PartyRole(PartyRole.CLEARING_FIRM));
>
> sides.addGroup(partyIds);
>
> partyIds.set(new PartyID(bookingRef));
> partyIds.set(new PartyIDSource
> (PartyIDSource.PROPRIETARY_CUSTOM_CODE));
> partyIds.set(new PartyRole(PartyRole.CLIENT_ID));
>
> sides.addGroup(partyIds);
>
> sides.set(new OrderQty(unitQty));
>
> message.addGroup(sides);
>
>
|
|
From: Steve B. <sb...@sm...> - 2006-03-22 09:47:26
|
Hello Belinda,
=20
This appears to be a different problem than Brad was having. Nested
groups are required to be
in order they they described in the specification. My understanding is
that the top level groups=20
are not required to be in any specific order.
=20
There are some strange orderings in the XML output, but it's probably a
side effect of
the XML formatter (which doesn't enforce either group or field ordering
for it's elements).=20
Can you provide the message strings (or at least the input message
string)? It would
help me to investigate the issue more quickly.
=20
Thanks,
=20
Steve Bate
=20
________________________________
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Belinda Ivkovic
Sent: Wednesday, March 22, 2006 2:23 AM
To: qui...@li...
Cc: Brad Harvey
Subject: [Quickfix-developers] Resending Messages
Hi Everyone,=20
We are having some problems resending messages when a resend
request is received. The error we are getting back is as follows -
58=3DREJECT Missing or invalid value for conditionally required
fields in PartyID repeating group.=20
I think the problem may be related to groups not getting copied
in the correct order when the message to be resent is created.
In Session#nextResendRequest the message is created via
'fromString' -=20
Message msg =3D new Message((String) messages.get(i),
dataDictionary);=20
We have done some unit tests to confirm that the order is
different when a message is created via 'fromString'. =20
Here is our validate method, -=20
private void validate(Message message) throws
InvalidMessage {=20
MessageFactory messageFactory =3D new
DefaultMessageFactory(); =20
String msgType =3D
MessageUtils.getMessageType(message.toString());=20
Message message2;=20
message2 =3D
messageFactory.create(dataDictionary.getVersion(), msgType);=20
message2.fromString(message.toString(),
dataDictionary, false);=20
System.out.println("Input Message - " +
message.toXML());=20
System.out.println("Message 2 - " +
message2.toXML());=20
}=20
And here is the output. The group fields are in different order
-=20
Input Message - <?xml version=3D"1.0" encoding=3D"ISO-8859-1"?>=20
<message>=20
<header>=20
<field number=3D"8"><![CDATA[FIX.4.4]]></field>=20
<field number=3D"9"><![CDATA[171]]></field>=20
<field number=3D"35"><![CDATA[D]]></field>=20
<field number=3D"49"><![CDATA[SenderCompId]]></field>=20
<field number=3D"56"><![CDATA[TargetCompId]]></field>=20
</header>=20
<body>=20
<field number=3D"11"><![CDATA[183339]]></field>=20
<field number=3D"22"><![CDATA[8]]></field>=20
<field number=3D"38"><![CDATA[1]]></field>=20
<field number=3D"40"><![CDATA[2]]></field>=20
<field number=3D"44"><![CDATA[12]]></field>=20
<field number=3D"48"><![CDATA[BHP]]></field>=20
<field number=3D"54"><![CDATA[2]]></field>=20
<field number=3D"55"><![CDATA[BHP]]></field>=20
<field number=3D"59"><![CDATA[1]]></field>=20
<field number=3D"60"><![CDATA[20060223-22:38:33]]></field>=20
<field number=3D"526"><![CDATA[3620]]></field>=20
<group>=20
<field number=3D"448"><![CDATA[8]]></field>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"452"><![CDATA[4]]></field>=20
</group>=20
<group>=20
<field number=3D"448"><![CDATA[AAA35354]]></field>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"452"><![CDATA[3]]></field>=20
</group>=20
</body>=20
<trailer>=20
<field number=3D"10"><![CDATA[168]]></field>=20
</trailer>=20
</message>=20
Message 2 - <?xml version=3D"1.0" encoding=3D"ISO-8859-1"?>=20
<message>=20
<header>=20
<field number=3D"8"><![CDATA[FIX.4.4]]></field>=20
<field number=3D"9"><![CDATA[171]]></field>=20
<field number=3D"35"><![CDATA[D]]></field>=20
<field number=3D"49"><![CDATA[SenderCompId]]></field>=20
<field number=3D"56"><![CDATA[TargetCompId]]></field>=20
</header>=20
<body>=20
<field number=3D"11"><![CDATA[183339]]></field>=20
<field number=3D"22"><![CDATA[8]]></field>=20
<field number=3D"38"><![CDATA[1]]></field>=20
<field number=3D"40"><![CDATA[2]]></field>=20
<field number=3D"44"><![CDATA[12]]></field>=20
<field number=3D"48"><![CDATA[BHP]]></field>=20
<field number=3D"54"><![CDATA[2]]></field>=20
<field number=3D"55"><![CDATA[BHP]]></field>=20
<field number=3D"59"><![CDATA[1]]></field>=20
<field number=3D"60"><![CDATA[20060223-22:38:33]]></field>=20
<field number=3D"453"><![CDATA[2]]></field>=20
<field number=3D"526"><![CDATA[3620]]></field>=20
<group>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"448"><![CDATA[8]]></field>=20
<field number=3D"452"><![CDATA[4]]></field>=20
</group>=20
<group>=20
<field number=3D"447"><![CDATA[D]]></field>=20
<field number=3D"448"><![CDATA[AAA35354]]></field>=20
<field number=3D"452"><![CDATA[3]]></field>=20
</group>=20
</body>=20
<trailer>=20
<field number=3D"10"><![CDATA[168]]></field>=20
</trailer>=20
</message>=20
Has anyone else had any issue with this?=20
Any help is appreciated.=20
Regards,=20
Belinda=20
|
|
From: Steve B. <sb...@sm...> - 2006-03-22 09:34:13
|
Hello Brad,
=20
I've committed a fix for this problem in the QFJ HEAD and added a unit
test based on your email
report. It appears the problem also exists in the C++ code. Oren will be
investigating and making
any necessary changes there.
=20
Thanks for the report,
=20
Steve Bate
________________________________
From: qui...@li...
[mailto:qui...@li...] On Behalf Of
Brad Harvey
Sent: Tuesday, March 21, 2006 5:57 AM
To: qui...@li...
Subject: [Quickfix-developers] [qfj] Ordering of nested
repeating groups in NewOrderCross
=09
=09
Hi Everyone,=20
I'm having some problems sending a valid NewOrderCross (s)
message using quickfix/j 1.0.0 beta3. The nested Party group is being
added at the very end of the Side group, but I need the 38 tag
(OrderQty) to be after the Party group.
Here's an example of the message that quickfix is outputting.=20
8=3DFIX.4.4
9=3D244
35=3Ds
34=3D5
49=3Dsender
52=3D20060319-09:08:20.881
56=3Dtarget
22=3D8
40=3D2
44=3D9
48=3DABC
55=3DABC
60=3D20060319-09:08:19
548=3D184214
549=3D2
550=3D0
552=3D2
54=3D1
38=3D9
453=3D2
448=3D8
447=3DD
452=3D4
448=3DAAA35777
447=3DD
452=3D3
54=3D2
38=3D9
453=3D2
448=3D8
447=3DD
452=3D4
448=3Daaa
447=3DD
452=3D3
10=3D100=20
The data dictionary has them specified in the correct order. I
can see how the ordering of fields within a group is decided:
// from NewOrderCross=20
public static class NoSides extends Group {=20
public NoSides() {=20
super(552, 54,=20
new int[] {54, 11, 526, 583, 229, 75, 1, 660, 581,
589, 590, 591, 70, 854, 38, 152, 516, 468, 469, 12, 13, 479, 497, 528,
529, 582, 121, 120, 775, 58, 354, 355, 77, 203, 544, 635, 377, 659, 0 }
);
}=20
But none of the tags in the nested group are in here (453, 448,
447, 452). How do we put the nested group in the correct spot?
Many thanks,=20
Brad.=20
Here's how we're creating a NoSides group:=20
// side, brokerCode, bookingRef, unitQty passed
in..=20
NoSides sides =3D new NoSides();=20
sides.set(new Side(side)));=20
=20
// Add PartyIDs=20
quickfix.fix44.NewOrderCross.NoSides.NoPartyIDs
partyIds =3D=20
new
quickfix.fix44.NewOrderCross.NoSides.NoPartyIDs(); =20
partyIds.set(new PartyID(brokerCode));=20
partyIds.set(new
PartyIDSource(PartyIDSource.PROPRIETARY_CUSTOM_CODE));=20
partyIds.set(new
PartyRole(PartyRole.CLEARING_FIRM)); =20
=20
sides.addGroup(partyIds);=20
=20
partyIds.set(new PartyID(bookingRef));=20
partyIds.set(new
PartyIDSource(PartyIDSource.PROPRIETARY_CUSTOM_CODE));=20
partyIds.set(new
PartyRole(PartyRole.CLIENT_ID)); =20
=20
sides.addGroup(partyIds);=20
sides.set(new OrderQty(unitQty));=20
=20
message.addGroup(sides);=20
|
|
From: Oren M. <or...@qu...> - 2006-03-22 09:24:07
|
You could check the sequence number of the outgoing message against the next expected outgoing sequence number. --oren On Mar 21, 2006, at 8:07 AM, Edde wrote: > Hi Guys, > > I appologize to bother you with this once again... > > >Oren wrote: > >So I suggest that you clear the expected sequence number *before* > starting the application. > >That way QuickFIX will allways request a retransmission from 1 > thru infinity, and since QuickFIX > >requested the retransmissions it will know what to do with them. > > I've now rewritten my application according to this design and it > seems to work fine. However, I would still like to know if there is > a way to know when QuickFIX has resent all messages? > > >Joerg wrote: > >BTW, a TestRequest with a unique has to be answered by a Heartbeat > with this unique id. > >If you get this specific heartbeat, you know that the other side > must have processed all > >messages preceding this TestRequest. Of course, this does not > prevent further resend > >processing at any later point of time. > > I've tried this approach but unfortunately our counterparty doesn't > quite live up the FIX specification in this regard. It works great > most of the time but every now and then our counterparty "forget" > to answer my TestRequest with the corresponding heartbeat. > Is there another way to do this? I've noticed that QuickFIX logs > the following event when the Resend has finished: "ResendRequest > for messages FROM: 1 TO: XXXX has been satisfied.". Is there a way > for me to get this message on an application level? > Another solution I was thinking off was to check for the first > message where the PossDupFlag isn't set and then assume that the > Resend is finished but I'm not sure this is a fail proof solution. > > Any comments or suggestions will be deeply appreciated. > Thanks, > /Eddie > |
|
From: Edde <edd...@gm...> - 2006-03-22 08:07:41
|
Hi Guys, >Oren wrote: >So I suggest that you clear the expected sequence number *before* starting the application. >That way QuickFIX will allways request a retransmission from 1 thru infinity, and since QuickFIX >requested the retransmissions it will know what to do with them. I've now rewritten my application according to this design and it seems to work fine. However, I would still like to know if there is a way to know when QuickFIX has resent all messages? >Joerg wrote: >BTW, a TestRequest with a unique has to be answered by a Heartbeat with this unique id. >If you get this specific heartbeat, you know that the other side must have processed all >messages preceding this TestRequest. Of course, this does not prevent further resend >processing at any later point of time. I've tried this approach but unfortunately our counterparty doesn't quite live up the FIX specification in this regard. It works great most of the time but every now and then our counterparty "forget" to answer my TestRequest with the corresponding heartbeat. Is there another way to do this? I've noticed that QuickFIX logs the following event when the Resend has finished: "ResendRequest for messages FROM: 1 TO: XXXX has been satisfied.". Is there a way for me to get this message on an application level? Another solution I was thinking off was to check for the first message wher= e the PossDupFlag isn't set and then assume that the Resend is finished but I'm not sure this is a fail proof solution. Any comments or suggestions will be deeply appreciated. Thanks, /Eddie |