[Quickfix-developers] Re: Contributing code
Brought to you by:
orenmnero
From: Howard E. <ho...@ex...> - 2003-11-18 16:10:33
|
Hello J=C3=B6rg, Thanks for the info. I should have checked the spec myself. I can take a look at changing it accordingly. The nice thing about this solution is that it required only minor changes to the lib, and no changes to any of the interfaces. I'm not sure, but I think I would need to make more significant changes to implement it as you suggest. I think the way to do it would be to enable the SocketAcceptor in its onConnect method to check for an existing connection using that session and then drop if one is found. If you could point me in the direction of a simpler solution, I'd be happy to take a look. Regarding Unit/Acceptance testing, what would you need for that? (This is my first time contributing to an open source project.) As for the ResetSeqNum code, I will send you my version of Session.cpp. Thanks again, Howard On Tue, 2003-11-18 at 10:42, qui...@li... wrote: > Message: 2 > Date: Tue, 18 Nov 2003 15:08:48 +0100 > From: Joerg Thoennes <Joe...@ma...> > Organization: Macdonald Associates > To: ho...@ex... > CC: QuickFIX Questions <qui...@li...> > Subject: Re: [Quickfix-developers] Contributing code >=20 > Hi Howard, >=20 > > Issue #1 > > If a FIX client connects to the QuickFIX acceptor, using a SessionID=20 > > already in use, it fouls the state of the Session object associated w= ith=20 > > that SessionID resulting in the Second connection being dropped, but = the=20 > > first connection no longer calling events on the Application class. = It=20 > > is also impossible to prevent the second connection from being accept= ed=20 > > within the Application class override, because the OnLogon event is=20 > > never raised. > >=20 > > Fix > > My fix for this solution is to disconnect an existing connection when= a=20 > > second connection with a "connected" SessionID comes in. The first=20 > > connection is disconnected (App gets LogOut event) and the second=20 > > connection is accepted (App gets Logon event). >=20 > The FIX 4.3 spec says in the chapter "FIX Session-level Testcases and=20 > Expected Behaviour", section "Test Cases" on page 39: >=20 > b. Logon message received with duplicate identity (e. g. same IP, port, > SenderCompID, TargetCompID, etc. as existing connection) >=20 > 1. Generate an "error" condition in test output. > 2. Disconnect without sending a message (note sending a Reject or Logou= t > would consume a MsgSeqNum) >=20 > IMHO, this solution violates the FIX spec. The second connection attemp= t=20 > should be dropped. Could you implement this? >=20 > > Modules Affected: (Acceptor.cpp, SocketConnection.cpp) > > Modules Affected: (Session.cpp) >=20 > It would be nice to have the complete changed files. Doing diff against= =20 > the current CVS version is quite easy. Thanks! >=20 > Cheers, J=C3=B6rg >=20 > --=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 >=20 >=20 >=20 > --__--__-- >=20 > Message: 3 > Subject: RE: [Quickfix-developers] Contributing code > Date: Tue, 18 Nov 2003 08:24:11 -0600 > From: "James C. Downs" <jc...@co...> > To: "Joerg Thoennes" <Joe...@ma...>, > <ho...@ex...> > Cc: "QuickFIX Questions" <qui...@li...> >=20 > PE1FVEEgSFRUUC1FUVVJVj0iQ29udGVudC1UeXBlIiBDT05URU5UPSJ0ZXh0L2h0bWw7IGN= oYXJz > ZXQ9dXRmLTgiPgo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4= yLy9F > TiI+CjxIVE1MPgo8SEVBRD4KCjxNRVRBIE5BTUU9IkdlbmVyYXRvciIgQ09OVEVOVD0iTVM= gRXhj > aGFuZ2UgU2VydmVyIHZlcnNpb24gNi4wLjY0ODcuMSI+CjxUSVRMRT5SZTogW1F1aWNrZml= 4LWRl > dmVsb3BlcnNdIENvbnRyaWJ1dGluZyBjb2RlPC9USVRMRT4KPC9IRUFEPgo8Qk9EWSBkaXI= 9bHRy > Pgo8RElWPkluIGtlZXBpbmcgd2l0aCB0aGUgc3Bpcml0IGluIHdoaWNoIFF1aWNrRml4IHd= hcyBk > ZXZlbG9wZWQsIElNSE8sSSBmZWVsIAp0aGF0ICh3aGVyZSBhcHByb3ByaWF0ZSkgY29kZSB= jb250 > cmlidXRpb25zIHNob3VsZCBiZSBhY2NvbXBhbmllZCB3aXRoIHVuaXQgCmFuZC9vciBhY2N= lcHRh > bmNlIHRlc3RzLjwvRElWPgo8RElWPiZuYnNwOzwvRElWPgo8RElWPiZuYnNwOzwvRElWPgo= 8RElW > PkppbSBEb3duczwvRElWPgo8QkxPQ0tRVU9URSBkaXI9bHRyIHN0eWxlPSJNQVJHSU4tUkl= HSFQ6 > IDBweCI+CiAgPERJVj48Rk9OVCBzaXplPTI+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0= gPEJS > PjxCPkZyb206PC9CPiAKICBxdWlja2ZpeC1kZXZlbG9wZXJzLWFkbWluQGxpc3RzLnNvdXJ= jZWZv > cmdlLm5ldCZuYnNwO29uIGJlaGFsZiBvZiZuYnNwO0pvZXJnIAogIFRob2VubmVzIDxCUj4= 8Qj5T > ZW50OjwvQj4gVHVlIDExLzE4LzIwMDMgODowOCBBTSA8QlI+PEI+VG86PC9CPiAKICBob3d= hcmRA > ZXhhZC5jb20gPEJSPjxCPkNjOjwvQj4gUXVpY2tGSVggUXVlc3Rpb25zIDxCUj48Qj5TdWJ= qZWN0 > OjwvQj4gUmU6IAogIFtRdWlja2ZpeC1kZXZlbG9wZXJzXSBDb250cmlidXRpbmcgY29kZTx= CUj48 > QlI+PC9GT05UPjwvRElWPgogIDxQPjxGT05UIHNpemU9Mj5IaSBIb3dhcmQsPEJSPjxCUj4= mZ3Q7 > IElzc3VlICMxPEJSPiZndDsgSWYgYSBGSVggY2xpZW50IAogIGNvbm5lY3RzIHRvIHRoZSB= RdWlj > a0ZJWCBhY2NlcHRvciwgdXNpbmcgYSBTZXNzaW9uSUQ8QlI+Jmd0OyBhbHJlYWR5IGluIHV= zZSwg > CiAgaXQgZm91bHMgdGhlIHN0YXRlIG9mIHRoZSBTZXNzaW9uIG9iamVjdCBhc3NvY2lhdGV= kIHdp > dGg8QlI+Jmd0OyB0aGF0IAogIFNlc3Npb25JRCByZXN1bHRpbmcgaW4gdGhlIFNlY29uZCB= jb25u > ZWN0aW9uIGJlaW5nIGRyb3BwZWQsIGJ1dCB0aGU8QlI+Jmd0OyAKICBmaXJzdCBjb25uZWN= 0aW9u > IG5vIGxvbmdlciBjYWxsaW5nIGV2ZW50cyBvbiB0aGUgQXBwbGljYXRpb24gY2xhc3MuJm5= ic3A7 > IAogIEl0PEJSPiZndDsgaXMgYWxzbyBpbXBvc3NpYmxlIHRvIHByZXZlbnQgdGhlIHNlY29= uZCBj > b25uZWN0aW9uIGZyb20gYmVpbmcgCiAgYWNjZXB0ZWQ8QlI+Jmd0OyB3aXRoaW4gdGhlIEF= wcGxp > Y2F0aW9uIGNsYXNzIG92ZXJyaWRlLCBiZWNhdXNlIHRoZSBPbkxvZ29uIAogIGV2ZW50IGl= zPEJS > PiZndDsgbmV2ZXIgcmFpc2VkLjxCUj4mZ3Q7PEJSPiZndDsgRml4PEJSPiZndDsgTXkgZml= 4IGZv > ciB0aGlzIAogIHNvbHV0aW9uIGlzIHRvIGRpc2Nvbm5lY3QgYW4gZXhpc3RpbmcgY29ubmV= jdGlv > biB3aGVuIGE8QlI+Jmd0OyBzZWNvbmQgCiAgY29ubmVjdGlvbiB3aXRoIGEgImNvbm5lY3R= lZCIg > U2Vzc2lvbklEIGNvbWVzIGluLiZuYnNwOyBUaGUgZmlyc3Q8QlI+Jmd0OyAKICBjb25uZWN= 0aW9u > IGlzIGRpc2Nvbm5lY3RlZCAoQXBwIGdldHMgTG9nT3V0IGV2ZW50KSBhbmQgdGhlIHNlY29= uZDxC > Uj4mZ3Q7IAogIGNvbm5lY3Rpb24gaXMgYWNjZXB0ZWQgKEFwcCBnZXRzIExvZ29uIGV2ZW5= 0KS48 > QlI+PEJSPlRoZSBGSVggNC4zIHNwZWMgc2F5cyBpbiAKICB0aGUgY2hhcHRlciAiRklYIFN= lc3Np > b24tbGV2ZWwgVGVzdGNhc2VzIGFuZDxCUj5FeHBlY3RlZCBCZWhhdmlvdXIiLCBzZWN0aW9= uIAog > ICJUZXN0IENhc2VzIiBvbiBwYWdlIDM5OjxCUj48QlI+Yi4gTG9nb24gbWVzc2FnZSByZWN= laXZl > ZCB3aXRoIGR1cGxpY2F0ZSAKICBpZGVudGl0eSAoZS4gZy4gc2FtZSBJUCwgcG9ydCw8QlI= +Jm5i > c3A7Jm5ic3A7Jm5ic3A7IFNlbmRlckNvbXBJRCwgCiAgVGFyZ2V0Q29tcElELCBldGMuIGF= zIGV4 > aXN0aW5nIGNvbm5lY3Rpb24pPEJSPjxCUj4xLiBHZW5lcmF0ZSBhbiAiZXJyb3IiIAogIGN= vbmRp > dGlvbiBpbiB0ZXN0IG91dHB1dC48QlI+Mi4gRGlzY29ubmVjdCB3aXRob3V0IHNlbmRpbmc= gYSBt > ZXNzYWdlIChub3RlIAogIHNlbmRpbmcgYSBSZWplY3Qgb3IgTG9nb3V0PEJSPiZuYnNwOyZ= uYnNw > OyZuYnNwOyB3b3VsZCBjb25zdW1lIGEgCiAgTXNnU2VxTnVtKTxCUj48QlI+SU1ITywgdGh= pcyBz > b2x1dGlvbiB2aW9sYXRlcyB0aGUgRklYIHNwZWMuIFRoZSBzZWNvbmQgCiAgY29ubmVjdGl= vbiBh > dHRlbXB0PEJSPnNob3VsZCBiZSBkcm9wcGVkLiBDb3VsZCB5b3UgaW1wbGVtZW50IHRoaXM= /PEJS > PjxCUj4mZ3Q7IAogIE1vZHVsZXMgQWZmZWN0ZWQ6IChBY2NlcHRvci5jcHAsIFNvY2tldEN= vbm5l > Y3Rpb24uY3BwKTxCUj4mZ3Q7IE1vZHVsZXMgCiAgQWZmZWN0ZWQ6IChTZXNzaW9uLmNwcCk= 8QlI+ > PEJSPkl0IHdvdWxkIGJlIG5pY2UgdG8gaGF2ZSB0aGUgY29tcGxldGUgY2hhbmdlZCAKICB= maWxl > cy4gRG9pbmcgZGlmZiBhZ2FpbnN0PEJSPnRoZSBjdXJyZW50IENWUyB2ZXJzaW9uIGlzIHF= 1aXRl > IGVhc3kuIAogIFRoYW5rcyE8QlI+PEJSPkNoZWVycywgSsO2cmc8QlI+PEJSPi0tPEJSPkp= vZXJn > IAogIFRob2VubmVzPEJSPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZ= uYnNw > OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnN= wOyZu > YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZ= uYnNw > OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAKICA8QSBocmVmPSJodHRwOi8vbWF= jZC5j > b20iPmh0dHA6Ly9tYWNkLmNvbTwvQT48QlI+VGVsLjogKzQ5ICgwKTI0MSAKICA0NDU5Ny0= yNCZu > YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyBNYWNkb25hbGQgQXNzb2NpYXRlcyBHbWJ= IPEJS > PkZheCA6ICs0OSAKICAoMCkyNDEgNDQ1OTctMTAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs= mbmJz > cDsgTG90aHJpbmdlciBTdHIuIDUyLCBELTUyMDcwIAogIEFhY2hlbjxCUj48QlI+PEJSPjx= CUj4t > LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0= tPEJS > PlRoaXMgCiAgU0YuIE5ldCBlbWFpbCBpcyBzcG9uc29yZWQgYnk6IEdvVG9NeVBDPEJSPkd= vVG9N > eVBDIGlzIHRoZSBmYXN0LCBlYXN5IGFuZCAKICBzZWN1cmUgd2F5IHRvIGFjY2VzcyB5b3V= yIGNv > bXB1dGVyIGZyb208QlI+YW55IFdlYiBicm93c2VyIG9yIHdpcmVsZXNzIGRldmljZS4gCiA= gQ2xp > Y2sgaGVyZSB0byBUcnkgaXQgRnJlZSE8QlI+PEEgCiAgaHJlZj0iaHR0cHM6Ly93d3cuZ29= 0b215 > cGMuY29tL3RyL09TRE4vQVcvUTRfMjAwMy90L2cyMmxwP1RhcmdldD1tbS9nMjJscC50bXB= sIj5o > dHRwczovL3d3dy5nb3RvbXlwYy5jb20vdHIvT1NETi9BVy9RNF8yMDAzL3QvZzIybHA/VGF= yZ2V0 > PW1tL2cyMmxwLnRtcGw8L0E+PEJSPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19= fX19f > X19fX19fX19fX19fPEJSPlF1aWNrZml4LWRldmVsb3BlcnMgCiAgbWFpbGluZyBsaXN0PEJ= SPlF1 > aWNrZml4LWRldmVsb3BlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0PEJSPjxBIAogIGhyZWY= 9Imh0 > dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3F1aWNrZml4LWR= ldmVs > b3BlcnMiPmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZvL3F= 1aWNr > Zml4LWRldmVsb3BlcnM8L0E+PEJSPjwvRk9OVD48L1A+PC9CTE9DS1FVT1RFPgoKPC9CT0R= ZPgo8 > L0hUTUw+ >=20 >=20 > --__--__-- >=20 > Message: 4 > Date: Tue, 18 Nov 2003 15:46:04 +0100 > From: Joerg Thoennes <Joe...@ma...> > Organization: Macdonald Associates > To: "James C. Downs" <jc...@co...> > CC: ho...@ex...,=20 > QuickFIX Questions <qui...@li...> > Subject: Re: [Quickfix-developers] Contributing code >=20 > James C. Downs wrote: > > In keeping with the spirit in which QuickFix was developed, IMHO,I fe= el=20 > > that (where appropriate) code contributions should be accompanied wit= h=20 > > unit and/or acceptance tests. >=20 > Thanks, Jim. I really forgot to mention that. Actually, we should only=20 > need unit tests. The acceptence test of QuickFIX have been taken from=20 > the specs "FIX Session-level test cases and expected behaviour". Maybe=20 > for the ResetSeqNum feature there is no such test since QuickFIX did no= t=20 > implement it so far. >=20 > Howard, if you send me the files I will start integrating them into the= =20 > current CVS. >=20 > Cheers, J=C3=83=C2=B6rg |