Skip to content

Commit d4b96ee

Browse files
author
Chris Busbey
committed
messages passed as pointers
1 parent 17393f8 commit d4b96ee

20 files changed

+133
-132
lines changed

_test/echo_server.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,23 +30,23 @@ func (e *EchoApplication) OnLogon(sessionID quickfix.SessionID) {
3030
func (e *EchoApplication) OnLogout(sessionID quickfix.SessionID) {
3131
e.log.Printf("OnLogout %v\n", sessionID.String())
3232
}
33-
func (e EchoApplication) ToAdmin(msgBuilder quickfix.Message, sessionID quickfix.SessionID) {
33+
func (e EchoApplication) ToAdmin(msgBuilder *quickfix.Message, sessionID quickfix.SessionID) {
3434
}
3535

36-
func (e EchoApplication) ToApp(msgBuilder quickfix.Message, sessionID quickfix.SessionID) (err error) {
36+
func (e EchoApplication) ToApp(msgBuilder *quickfix.Message, sessionID quickfix.SessionID) (err error) {
3737
return
3838
}
3939

40-
func (e EchoApplication) FromAdmin(msg quickfix.Message, sessionID quickfix.SessionID) (err quickfix.MessageRejectError) {
40+
func (e EchoApplication) FromAdmin(msg *quickfix.Message, sessionID quickfix.SessionID) (err quickfix.MessageRejectError) {
4141
return
4242
}
4343

44-
func (e *EchoApplication) FromApp(msg quickfix.Message, sessionID quickfix.SessionID) (err quickfix.MessageRejectError) {
44+
func (e *EchoApplication) FromApp(msg *quickfix.Message, sessionID quickfix.SessionID) (err quickfix.MessageRejectError) {
4545
e.log.Println("Got Message ", msg)
4646
return router.Route(msg, sessionID)
4747
}
4848

49-
func (e *EchoApplication) processMsg(msg quickfix.Message, sessionID quickfix.SessionID) quickfix.MessageRejectError {
49+
func (e *EchoApplication) processMsg(msg *quickfix.Message, sessionID quickfix.SessionID) quickfix.MessageRejectError {
5050
var possResend field.PossResendField
5151
msg.Header.Get(&possResend)
5252

@@ -77,7 +77,7 @@ func (e *EchoApplication) processMsg(msg quickfix.Message, sessionID quickfix.Se
7777
return nil
7878
}
7979

80-
func copyMessage(msg quickfix.Message) quickfix.Message {
80+
func copyMessage(msg *quickfix.Message) *quickfix.Message {
8181
msgType := new(field.MsgTypeField)
8282
msg.Header.Get(msgType)
8383

acceptor.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ func (a *Acceptor) handleConnection(netConn net.Conn) {
160160
}
161161

162162
msg := NewMessage()
163-
err = ParseMessage(&msg, msgBytes)
163+
err = ParseMessage(msg, msgBytes)
164164
if err != nil {
165165
a.invalidMessage(msgBytes, err)
166166
return

application.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@ type Application interface {
1313
OnLogout(sessionID SessionID)
1414

1515
//Notification of admin message being sent to target.
16-
ToAdmin(message Message, sessionID SessionID)
16+
ToAdmin(message *Message, sessionID SessionID)
1717

1818
//Notification of app message being sent to target.
19-
ToApp(message Message, sessionID SessionID) error
19+
ToApp(message *Message, sessionID SessionID) error
2020

2121
//Notification of admin message being received from target.
22-
FromAdmin(message Message, sessionID SessionID) MessageRejectError
22+
FromAdmin(message *Message, sessionID SessionID) MessageRejectError
2323

2424
//Notification of app message being received from target.
25-
FromApp(message Message, sessionID SessionID) MessageRejectError
25+
FromApp(message *Message, sessionID SessionID) MessageRejectError
2626
}

in_session.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (state inSession) FixMsgIn(session *session, msg *Message) sessionState {
2020

2121
switch enum.MsgType(msgType) {
2222
case enum.MsgType_LOGON:
23-
if err := session.handleLogon(*msg); err != nil {
23+
if err := session.handleLogon(msg); err != nil {
2424
if err := session.initiateLogoutInReplyTo("", msg); err != nil {
2525
return handleStateError(session, err)
2626
}
@@ -37,7 +37,7 @@ func (state inSession) FixMsgIn(session *session, msg *Message) sessionState {
3737
case enum.MsgType_TEST_REQUEST:
3838
return state.handleTestRequest(session, msg)
3939
default:
40-
if err := session.verify(*msg); err != nil {
40+
if err := session.verify(msg); err != nil {
4141
return state.processReject(session, msg, err)
4242
}
4343
}
@@ -73,7 +73,7 @@ func (state inSession) Timeout(session *session, event internal.Event) (nextStat
7373
}
7474

7575
func (state inSession) handleLogout(session *session, msg *Message) (nextState sessionState) {
76-
if err := session.verifySelect(*msg, false, false); err != nil {
76+
if err := session.verifySelect(msg, false, false); err != nil {
7777
return state.processReject(session, msg, err)
7878
}
7979

@@ -102,7 +102,7 @@ func (state inSession) handleLogout(session *session, msg *Message) (nextState s
102102
}
103103

104104
func (state inSession) handleTestRequest(session *session, msg *Message) (nextState sessionState) {
105-
if err := session.verify(*msg); err != nil {
105+
if err := session.verify(msg); err != nil {
106106
return state.processReject(session, msg, err)
107107
}
108108
var testReq FIXString
@@ -131,7 +131,7 @@ func (state inSession) handleSequenceReset(session *session, msg *Message) (next
131131
}
132132
}
133133

134-
if err := session.verifySelect(*msg, bool(gapFillFlag), bool(gapFillFlag)); err != nil {
134+
if err := session.verifySelect(msg, bool(gapFillFlag), bool(gapFillFlag)); err != nil {
135135
return state.processReject(session, msg, err)
136136
}
137137

@@ -147,7 +147,7 @@ func (state inSession) handleSequenceReset(session *session, msg *Message) (next
147147
}
148148
case newSeqNo < expectedSeqNum:
149149
//FIXME: to be compliant with legacy tests, do not include tag in reftagid? (11c_NewSeqNoLess)
150-
if err := session.doReject(*msg, valueIsIncorrectNoTag()); err != nil {
150+
if err := session.doReject(msg, valueIsIncorrectNoTag()); err != nil {
151151
return handleStateError(session, err)
152152
}
153153
}
@@ -156,7 +156,7 @@ func (state inSession) handleSequenceReset(session *session, msg *Message) (next
156156
}
157157

158158
func (state inSession) handleResendRequest(session *session, msg *Message) (nextState sessionState) {
159-
if err := session.verifyIgnoreSeqNumTooHighOrLow(*msg); err != nil {
159+
if err := session.verifyIgnoreSeqNumTooHighOrLow(msg); err != nil {
160160
return state.processReject(session, msg, err)
161161
}
162162

@@ -188,11 +188,11 @@ func (state inSession) handleResendRequest(session *session, msg *Message) (next
188188
return handleStateError(session, err)
189189
}
190190

191-
if err := session.checkTargetTooLow(*msg); err != nil {
191+
if err := session.checkTargetTooLow(msg); err != nil {
192192
return state
193193
}
194194

195-
if err := session.checkTargetTooHigh(*msg); err != nil {
195+
if err := session.checkTargetTooHigh(msg); err != nil {
196196
return state
197197
}
198198

@@ -213,7 +213,7 @@ func (state inSession) resendMessages(session *session, beginSeqNo, endSeqNo int
213213
nextSeqNum := seqNum
214214
msg := NewMessage()
215215
for _, msgBytes := range msgs {
216-
_ = ParseMessage(&msg, bytes.NewBuffer(msgBytes))
216+
_ = ParseMessage(msg, bytes.NewBuffer(msgBytes))
217217
msgType, _ := msg.Header.GetBytes(tagMsgType)
218218
sentMessageSeqNum, _ := msg.Header.GetInt(tagMsgSeqNum)
219219

@@ -287,7 +287,7 @@ func (state inSession) processReject(session *session, msg *Message, rej Message
287287

288288
switch rej.RejectReason() {
289289
case rejectReasonCompIDProblem, rejectReasonSendingTimeAccuracyProblem:
290-
if err := session.doReject(*msg, rej); err != nil {
290+
if err := session.doReject(msg, rej); err != nil {
291291
return handleStateError(session, err)
292292
}
293293

@@ -296,7 +296,7 @@ func (state inSession) processReject(session *session, msg *Message, rej Message
296296
}
297297
return logoutState{}
298298
default:
299-
if err := session.doReject(*msg, rej); err != nil {
299+
if err := session.doReject(msg, rej); err != nil {
300300
return handleStateError(session, err)
301301
}
302302

@@ -311,7 +311,7 @@ func (state inSession) doTargetTooLow(session *session, msg *Message, rej target
311311
var posDupFlag FIXBoolean
312312
if msg.Header.Has(tagPossDupFlag) {
313313
if err := msg.Header.GetField(tagPossDupFlag, &posDupFlag); err != nil {
314-
if rejErr := session.doReject(*msg, err); rejErr != nil {
314+
if rejErr := session.doReject(msg, err); rejErr != nil {
315315
return handleStateError(session, rejErr)
316316
}
317317
return state
@@ -326,15 +326,15 @@ func (state inSession) doTargetTooLow(session *session, msg *Message, rej target
326326
}
327327

328328
if !msg.Header.Has(tagOrigSendingTime) {
329-
if err := session.doReject(*msg, RequiredTagMissing(tagOrigSendingTime)); err != nil {
329+
if err := session.doReject(msg, RequiredTagMissing(tagOrigSendingTime)); err != nil {
330330
return handleStateError(session, err)
331331
}
332332
return state
333333
}
334334

335335
var origSendingTime FIXUTCTimestamp
336336
if err := msg.Header.GetField(tagOrigSendingTime, &origSendingTime); err != nil {
337-
if rejErr := session.doReject(*msg, err); rejErr != nil {
337+
if rejErr := session.doReject(msg, err); rejErr != nil {
338338
return handleStateError(session, rejErr)
339339
}
340340
return state
@@ -346,7 +346,7 @@ func (state inSession) doTargetTooLow(session *session, msg *Message, rej target
346346
}
347347

348348
if sendingTime.Before(origSendingTime.Time) {
349-
if err := session.doReject(*msg, sendingTimeAccuracyProblem()); err != nil {
349+
if err := session.doReject(msg, sendingTimeAccuracyProblem()); err != nil {
350350
return handleStateError(session, err)
351351
}
352352

in_session_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (s *InSessionTestSuite) TestLogoutResetOnLogout() {
6262
s.session.ResetOnLogout = true
6363

6464
s.MockApp.On("ToApp").Return(nil)
65-
s.Nil(s.queueForSend(*s.NewOrderSingle()))
65+
s.Nil(s.queueForSend(s.NewOrderSingle()))
6666
s.MockApp.AssertExpectations(s.T())
6767

6868
s.MockApp.On("FromAdmin").Return(nil)
@@ -243,7 +243,7 @@ func (s *InSessionTestSuite) TestFIXMsgInResendRequestAllAdminThenApp() {
243243
s.LastToAdminMessageSent()
244244

245245
s.MockApp.On("ToApp").Return(nil)
246-
s.Require().Nil(s.session.send(*s.NewOrderSingle()))
246+
s.Require().Nil(s.session.send(s.NewOrderSingle()))
247247
s.LastToAppMessageSent()
248248

249249
s.MockApp.AssertNumberOfCalls(s.T(), "ToAdmin", 2)
@@ -280,7 +280,7 @@ func (s *InSessionTestSuite) TestFIXMsgInResendRequestDoNotSendApp() {
280280
s.LastToAdminMessageSent()
281281

282282
s.MockApp.On("ToApp").Return(nil)
283-
s.Require().Nil(s.session.send(*s.NewOrderSingle()))
283+
s.Require().Nil(s.session.send(s.NewOrderSingle()))
284284
s.LastToAppMessageSent()
285285

286286
s.session.Timeout(s.session, internal.NeedHeartbeat)

logon_state.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (s logonState) FixMsgIn(session *session, msg *Message) (nextState sessionS
2020
return latentState{}
2121
}
2222

23-
if err := session.handleLogon(*msg); err != nil {
23+
if err := session.handleLogon(msg); err != nil {
2424
switch err := err.(type) {
2525
case RejectLogon:
2626
session.log.OnEvent(err.Text)

logon_state_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ func (s *LogonStateTestSuite) TestFixMsgInLogonSeqNumTooHigh() {
283283
msgBytesSent, ok := s.Receiver.LastMessage()
284284
s.Require().True(ok)
285285
sentMessage := NewMessage()
286-
err := ParseMessage(&sentMessage, bytes.NewBuffer(msgBytesSent))
286+
err := ParseMessage(sentMessage, bytes.NewBuffer(msgBytesSent))
287287
s.Require().Nil(err)
288288
s.MessageType(enum.MsgType_LOGON, sentMessage)
289289

logout_state_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func (s *LogoutStateTestSuite) TestFixMsgInLogoutResetOnLogout() {
8989
s.session.ResetOnLogout = true
9090

9191
s.MockApp.On("ToApp").Return(nil)
92-
s.Nil(s.queueForSend(*s.NewOrderSingle()))
92+
s.Nil(s.queueForSend(s.NewOrderSingle()))
9393
s.MockApp.AssertExpectations(s.T())
9494

9595
s.MockApp.On("FromAdmin").Return(nil)

message.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ type Message struct {
9595
}
9696

9797
//ToMessage returns the message itself
98-
func (m Message) ToMessage() Message { return m }
98+
func (m *Message) ToMessage() *Message { return m }
9999

100100
//parseError is returned when bytes cannot be parsed as a FIX message.
101101
type parseError struct {
@@ -105,12 +105,13 @@ type parseError struct {
105105
func (e parseError) Error() string { return fmt.Sprintf("error parsing message: %s", e.OrigError) }
106106

107107
//NewMessage returns a newly initialized Message instance
108-
func NewMessage() (m Message) {
108+
func NewMessage() *Message {
109+
m := new(Message)
109110
m.Header.Init()
110111
m.Body.Init()
111112
m.Trailer.Init()
112113

113-
return
114+
return m
114115
}
115116

116117
//ParseMessage constructs a Message from a byte slice wrapping a FIX message.
@@ -217,7 +218,7 @@ func ParseMessage(msg *Message, rawMessage *bytes.Buffer) (err error) {
217218
}
218219

219220
// MsgType returns MsgType (tag 35) field's value
220-
func (m Message) MsgType() (enum.MsgType, MessageRejectError) {
221+
func (m *Message) MsgType() (enum.MsgType, MessageRejectError) {
221222
s, err := m.Header.GetString(tagMsgType)
222223
if err != nil {
223224
return enum.MsgType(""), err
@@ -226,15 +227,15 @@ func (m Message) MsgType() (enum.MsgType, MessageRejectError) {
226227
}
227228

228229
// IsMsgTypeOf returns true if the Header contains MsgType (tag 35) field and its value is the specified one.
229-
func (m Message) IsMsgTypeOf(msgType enum.MsgType) bool {
230+
func (m *Message) IsMsgTypeOf(msgType enum.MsgType) bool {
230231
if v, err := m.MsgType(); err == nil {
231232
return v == msgType
232233
}
233234
return false
234235
}
235236

236237
//reverseRoute returns a message builder with routing header fields initialized as the reverse of this message.
237-
func (m Message) reverseRoute() Message {
238+
func (m *Message) reverseRoute() *Message {
238239
reverseMsg := NewMessage()
239240

240241
copy := func(src Tag, dest Tag) {
@@ -296,7 +297,7 @@ func extractField(parsedFieldBytes *TagValue, buffer []byte) (remBytes []byte, e
296297
return buffer[(endIndex + 1):], err
297298
}
298299

299-
func (m Message) String() string {
300+
func (m *Message) String() string {
300301
if m.rawMessage != nil {
301302
return m.rawMessage.String()
302303
}
@@ -309,7 +310,7 @@ func newCheckSum(value int) FIXString {
309310
}
310311

311312
//Build constructs a []byte from a Message instance
312-
func (m Message) build() []byte {
313+
func (m *Message) build() []byte {
313314
m.cook()
314315

315316
var b bytes.Buffer
@@ -319,7 +320,7 @@ func (m Message) build() []byte {
319320
return b.Bytes()
320321
}
321322

322-
func (m Message) cook() {
323+
func (m *Message) cook() {
323324
bodyLength := m.Header.length() + m.Body.length() + m.Trailer.length()
324325
m.Header.SetField(tagBodyLength, FIXInt(bodyLength))
325326
checkSum := (m.Header.total() + m.Body.total() + m.Trailer.total()) % 256

message_pool.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ type messagePool struct {
66

77
func (p *messagePool) New() *Message {
88
msg := NewMessage()
9-
return &msg
9+
return msg
1010
}
1111

1212
func (p *messagePool) Get() (msg *Message) {

0 commit comments

Comments
 (0)