Skip to content

Commit d826dde

Browse files
authored
Merge pull request connamara#969 from gbirchmeier/at-updates
correct LinesOfText field in the DDs; make ATs not auto-echo News
2 parents cd905f2 + c9ebe2d commit d826dde

19 files changed

+69
-54
lines changed

AcceptanceTest/ATApplication.cs

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text.RegularExpressions;
24
using QuickFix;
35
using QuickFix.Fields;
46

@@ -100,28 +102,26 @@ private void ProcessNOS(Message message, SessionID sessionId)
100102
Message echo = new(message);
101103

102104
bool possResend = false;
103-
if (message.Header.IsSetField(QuickFix.Fields.Tags.PossResend))
104-
possResend = message.Header.GetBoolean(QuickFix.Fields.Tags.PossResend);
105+
if (message.Header.IsSetField(Tags.PossResend))
106+
possResend = message.Header.GetBoolean(Tags.PossResend);
105107

106-
KeyValuePair<string, SessionID> pair = new(message.GetString(QuickFix.Fields.Tags.ClOrdID), sessionId);
108+
KeyValuePair<string, SessionID> pair = new(message.GetString(Tags.ClOrdID), sessionId);
107109
if (possResend && _clOrdIDs.Contains(pair))
108110
return;
109111
_clOrdIDs.Add(pair);
110112

111113
Session.SendToTarget(echo, sessionId);
112114
}
113115

114-
private void AcknowledgeXmlMessage(Message msg, SessionID sessionId) {
115-
string beginString = Message.ExtractBeginString(msg.ToString());
116-
string seqNo = msg.Header.GetString(34);
116+
private static Message CreateNewsReply(Message source, string headlineString) {
117+
string beginString = Message.ExtractBeginString(source.ToString());
117118

118119
Message response = new();
119120
response.Header.SetField(new BeginString(beginString));
120121
response.Header.SetField(new MsgType("B"));
121-
response.SetField(new Headline($"Successfully received 'n' message with seqNo={seqNo}"));
122-
response.SetField(new NoLinesOfText(0));
122+
response.SetField(new Headline(headlineString));
123123

124-
Session.SendToTarget(response, sessionId);
124+
return response;
125125
}
126126

127127
public void OnMessage(QuickFix.FIX41.News news, SessionID sessionId) { ProcessNews(news, sessionId); }
@@ -134,13 +134,26 @@ private void AcknowledgeXmlMessage(Message msg, SessionID sessionId) {
134134

135135
private void ProcessNews(Message msg, SessionID sessionId)
136136
{
137-
if (msg.IsSetField(QuickFix.Fields.Tags.Headline) && (msg.GetString(QuickFix.Fields.Tags.Headline) == "STOPME"))
137+
if (msg.IsSetField(Tags.Headline))
138138
{
139-
if (this.StopMeEvent != null)
139+
string headline = msg.GetString(Tags.Headline);
140+
if (headline == "STOPME" && StopMeEvent is not null)
141+
{
140142
StopMeEvent();
143+
}
144+
else if (headline.StartsWith("echo:"))
145+
{
146+
Match match = Regex.Match(headline, "echo: *(.*)");
147+
Message reply = CreateNewsReply(msg, match.Groups[1].Value);
148+
149+
if (msg.Header.IsSetField(Tags.MessageEncoding))
150+
reply.Header.SetField(new MessageEncoding(msg.Header.GetString(Tags.MessageEncoding)));
151+
if (msg.IsSetField(Tags.EncodedHeadline))
152+
reply.SetField(new EncodedHeadline(msg.GetString(Tags.EncodedHeadline)));
153+
154+
Session.SendToTarget(reply, sessionId);
155+
}
141156
}
142-
else
143-
Echo(msg, sessionId);
144157
}
145158

146159
public void OnMessage(QuickFix.FIX44.TradeCaptureReportRequest msg, SessionID sessionId)
@@ -186,9 +199,13 @@ public void FromApp(Message message, SessionID sessionId)
186199
}
187200
}
188201

189-
public void FromAdmin(Message message, SessionID sessionId) {
190-
if (message.Header.GetString(35) == "n")
191-
AcknowledgeXmlMessage(message, sessionId);
202+
public void FromAdmin(Message msg, SessionID sessionId) {
203+
if (msg.Header.GetString(35) == "n") {
204+
string seqNo = msg.Header.GetString(34);
205+
Session.SendToTarget(
206+
CreateNewsReply(msg, $"Successfully received 'n' message with seqNo={seqNo}"),
207+
sessionId);
208+
}
192209
}
193210

194211
public void ToAdmin(Message message, SessionID sessionId) { }

AcceptanceTest/definitions/server/fix43/ReceiveXmlMessage.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ E8=FIX.4.335=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=610=0
99
# (Need the News response to ensure that FIX parses it and passes it up to the app;
1010
# without this response, the test will false pass)
1111
I8=FIX.4.335=n34=249=TW52=<TIME>56=ISLD212=55213=<RTRF>8=FIX.4.39=37735=834=208blah blah blah</RTRF>
12-
E8=FIX.4.335=B34=249=ISLD52=00000000-00:00:00.00056=TW33=0148=Successfully received 'n' message with seqNo=210=0
12+
E8=FIX.4.335=B34=249=ISLD52=00000000-00:00:00.00056=TW148=Successfully received 'n' message with seqNo=210=0
1313

1414
# logout message and response
1515
I8=FIX.4.335=534=349=TW52=<TIME>56=ISLD

AcceptanceTest/definitions/server/fix44/ComponentFieldRequired.def

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@ E8=FIX.4.49=6035=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=210=0
88

99
I8=FIX.4.435=AD34=249=TW52=<TIME>56=ISLD568=tradereqid569=0
1010

11-
#Send news and receive echo
12-
#(basically, force an echo to ensure that above was not rejected)
13-
I8=FIX.4.435=B34=349=TW52=<TIME>56=ISLD148=FOO33=0
14-
E8=FIX.4.435=B34=249=ISLD52=00000000-00:00:00.00056=TW33=0148=FOO
11+
# Do a TestRequest to get a response that ensures the above was not rejected
12+
I8=FIX.4.435=134=349=TW52=<TIME>56=ISLD112=TEST
13+
E8=FIX.4.435=034=249=ISLD52=00000000-00:00:00.00056=TW112=TEST
1514

1615

1716
# logout message and response

AcceptanceTest/definitions/server/fix44/InternationalCharacters.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ I8=FIX.4.435=A34=149=TW52=<TIME>56=ISLD98=0108=2
1111
E8=FIX.4.49=6035=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=210=0
1212

1313
#Send news with intl chars and receive echo
14-
I8=FIX.4.435=B34=249=TW52=<TIME>56=ISLD347=UTF-8148=ole!359=olé!33=0
15-
E8=FIX.4.49=8335=B34=249=ISLD52=00000000-00:00:00.00056=TW347=UTF-833=0148=ole!359=olé!10=69
14+
I8=FIX.4.435=B34=249=TW52=<TIME>56=ISLD347=UTF-8148=echo:ole!359=olé!
15+
E8=FIX.4.435=B34=249=ISLD52=00000000-00:00:00.00056=TW347=UTF-8148=ole!359=olé!10=69
1616

1717
# logout message and response
1818
I8=FIX.4.435=534=349=TW52=<TIME>56=ISLD

AcceptanceTest/definitions/server/fix44/ReceiveXmlMessage.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ E8=FIX.4.435=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=610=0
99
# (Need the News response to ensure that FIX parses it and passes it up to the app;
1010
# without this response, the test will false pass)
1111
I8=FIX.4.435=n34=249=TW52=<TIME>56=ISLD212=55213=<RTRF>8=FIX.4.39=37735=834=208blah blah blah</RTRF>
12-
E8=FIX.4.435=B34=249=ISLD52=00000000-00:00:00.00056=TW33=0148=Successfully received 'n' message with seqNo=210=0
12+
E8=FIX.4.435=B34=249=ISLD52=00000000-00:00:00.00056=TW148=Successfully received 'n' message with seqNo=210=0
1313

1414
# logout message and response
1515
I8=FIX.4.435=534=349=TW52=<TIME>56=ISLD

AcceptanceTest/definitions/server/fix44/issue146_MissingGroupDelimiter.def

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@ I8=FIX.4.435=AP34=249=TW52=<TIME>56=ISLD1=2005050000155=EURUSD453=0581=
1212
# Rejection resulting from previous message
1313
E8=FIX.4.435=334=249=ISLD52=00000000-00:00:00.00056=TW45=258=Group 702's first entry does not start with delimiter 703371=702372=AP373=99
1414

15-
#Send news and receive echo
16-
#(basically, force an echo to ensure that above was not rejected)
17-
I8=FIX.4.435=B34=349=TW52=<TIME>56=ISLD148=FOO33=0
18-
E8=FIX.4.435=B34=349=ISLD52=00000000-00:00:00.00056=TW33=0148=FOO
15+
# Do a TestRequest to get a response that ensures the above was not rejected
16+
I8=FIX.4.435=134=349=TW52=<TIME>56=ISLD112=TEST
17+
E8=FIX.4.435=034=349=ISLD52=00000000-00:00:00.00056=TW112=TEST
1918

2019

2120
# logout message and response

AcceptanceTest/definitions/server/fix50/BeginString.def

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,8 @@ E8=FIXT.1.19=6735=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=2113
99
# begin message exchange
1010
#------------------------
1111

12-
#Send news and receive echo
13-
I8=FIXT.1.135=B34=249=TW52=<TIME>56=ISLD148=FOO33=0
14-
E8=FIXT.1.135=B34=249=ISLD52=00000000-00:00:00.00056=TW33=0148=FOO
12+
I8=FIXT.1.135=134=249=TW52=<TIME>56=ISLD112=TEST
13+
E8=FIXT.1.135=034=249=ISLD52=00000000-00:00:00.00056=TW112=TEST
1514

1615
#------------------------
1716
# end message exchange

AcceptanceTest/definitions/server/fix50/ReceiveXmlMessage.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ E8=FIXT.1.135=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=61137=71
99
# (Need the News response to ensure that FIX parses it and passes it up to the app;
1010
# without this response, the test will false pass)
1111
I8=FIXT.1.135=n34=249=TW52=<TIME>56=ISLD212=55213=<RTRF>8=FIX.4.39=37735=834=208blah blah blah</RTRF>
12-
E8=FIXT.1.135=B34=249=ISLD52=00000000-00:00:00.00056=TW33=0148=Successfully received 'n' message with seqNo=210=0
12+
E8=FIXT.1.135=B34=249=ISLD52=00000000-00:00:00.00056=TW148=Successfully received 'n' message with seqNo=210=0
1313

1414
# logout message and response
1515
I8=FIXT.1.135=534=349=TW52=<TIME>56=ISLD

AcceptanceTest/definitions/server/fix50sp1/ReceiveXmlMessage.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ E8=FIXT.1.135=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=61137=81
99
# (Need the News response to ensure that FIX parses it and passes it up to the app;
1010
# without this response, the test will false pass)
1111
I8=FIXT.1.135=n34=249=TW52=<TIME>56=ISLD212=55213=<RTRF>8=FIX.4.39=37735=834=208blah blah blah</RTRF>
12-
E8=FIXT.1.135=B34=249=ISLD52=00000000-00:00:00.00056=TW33=0148=Successfully received 'n' message with seqNo=210=0
12+
E8=FIXT.1.135=B34=249=ISLD52=00000000-00:00:00.00056=TW148=Successfully received 'n' message with seqNo=210=0
1313

1414
# logout message and response
1515
I8=FIXT.1.135=534=349=TW52=<TIME>56=ISLD

AcceptanceTest/definitions/server/fix50sp2/ReceiveXmlMessage.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ E8=FIXT.1.135=A34=149=ISLD52=00000000-00:00:00.00056=TW98=0108=61137=91
99
# (Need the News response to ensure that FIX parses it and passes it up to the app;
1010
# without this response, the test will false pass)
1111
I8=FIXT.1.135=n34=249=TW52=<TIME>56=ISLD212=55213=<RTRF>8=FIX.4.39=37735=834=208blah blah blah</RTRF>
12-
E8=FIXT.1.135=B34=249=ISLD52=00000000-00:00:00.00056=TW33=0148=Successfully received 'n' message with seqNo=210=0
12+
E8=FIXT.1.135=B34=249=ISLD52=00000000-00:00:00.00056=TW148=Successfully received 'n' message with seqNo=210=0
1313

1414
# logout message and response
1515
I8=FIXT.1.135=534=349=TW52=<TIME>56=ISLD

0 commit comments

Comments
 (0)