Skip to content

Commit d38ffc0

Browse files
author
Chris Busbey
committed
normalized some error logging in session code
1 parent a9e665c commit d38ffc0

File tree

3 files changed

+45
-15
lines changed

3 files changed

+45
-15
lines changed

in_session.go

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,9 @@ func (state inSession) FixMsgIn(session *session, msg Message) (nextState sessio
4040
if err := msg.Header.GetField(tagMsgType, &msgType); err == nil {
4141
switch string(msgType) {
4242
case enum.MsgType_LOGON:
43-
session.handleLogon(msg)
44-
return
43+
if err := session.handleLogon(msg); err != nil {
44+
return session.handleError(err)
45+
}
4546
case enum.MsgType_LOGOUT:
4647
session.log.OnEvent("Received logout request")
4748
session.log.OnEvent("Sending logout response")
@@ -56,7 +57,9 @@ func (state inSession) FixMsgIn(session *session, msg Message) (nextState sessio
5657
}
5758
}
5859

59-
session.store.IncrNextTargetMsgSeqNum()
60+
if err := session.store.IncrNextTargetMsgSeqNum(); err != nil {
61+
return session.handleError(err)
62+
}
6063
return
6164
}
6265

@@ -79,12 +82,16 @@ func (state inSession) Timeout(session *session, event event) (nextState session
7982
case needHeartbeat:
8083
heartBt := NewMessage()
8184
heartBt.Header.SetField(tagMsgType, FIXString("0"))
82-
session.send(heartBt)
85+
if err := session.send(heartBt); err != nil {
86+
return session.handleError(err)
87+
}
8388
case peerTimeout:
8489
testReq := NewMessage()
8590
testReq.Header.SetField(tagMsgType, FIXString("1"))
8691
testReq.Body.SetField(tagTestReqID, FIXString("TEST"))
87-
session.send(testReq)
92+
if err := session.send(testReq); err != nil {
93+
return session.handleError(err)
94+
}
8895
session.log.OnEvent("Sent test request TEST")
8996
session.peerTimer.Reset(time.Duration(int64(1.2 * float64(session.heartBeatTimeout))))
9097
return pendingTimeout{}
@@ -100,10 +107,14 @@ func (state inSession) handleTestRequest(session *session, msg Message) (nextSta
100107
heartBt := NewMessage()
101108
heartBt.Header.SetField(tagMsgType, FIXString("0"))
102109
heartBt.Body.SetField(tagTestReqID, testReq)
103-
session.send(heartBt)
110+
if err := session.send(heartBt); err != nil {
111+
return session.handleError(err)
112+
}
104113
}
105114

106-
session.store.IncrNextTargetMsgSeqNum()
115+
if err := session.store.IncrNextTargetMsgSeqNum(); err != nil {
116+
return session.handleError(err)
117+
}
107118
return state
108119
}
109120

@@ -115,7 +126,9 @@ func (state inSession) handleSequenceReset(session *session, msg Message) (nextS
115126

116127
switch {
117128
case newSeqNo > expectedSeqNum:
118-
session.store.SetNextTargetMsgSeqNum(int(newSeqNo))
129+
if err := session.store.SetNextTargetMsgSeqNum(int(newSeqNo)); err != nil {
130+
return session.handleError(err)
131+
}
119132
case newSeqNo < expectedSeqNum:
120133
//FIXME: to be compliant with legacy tests, do not include tag in reftagid? (11c_NewSeqNoLess)
121134
session.doReject(msg, valueIsIncorrectNoTag())
@@ -150,7 +163,9 @@ func (state inSession) handleResendRequest(session *session, msg Message) (nextS
150163
}
151164

152165
state.resendMessages(session, int(beginSeqNo), endSeqNo)
153-
session.store.IncrNextTargetMsgSeqNum()
166+
if err := session.store.IncrNextTargetMsgSeqNum(); err != nil {
167+
return session.handleError(err)
168+
}
154169
return state
155170
}
156171

@@ -217,7 +232,9 @@ func (state inSession) processReject(session *session, msg Message, rej MessageR
217232
return logoutState{}
218233
default:
219234
session.doReject(msg, rej)
220-
session.store.IncrNextTargetMsgSeqNum()
235+
if err := session.store.IncrNextTargetMsgSeqNum(); err != nil {
236+
return session.handleError(err)
237+
}
221238
return state
222239
}
223240
}

initiator.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func (i *Initiator) Start() error {
3434
return fmt.Errorf("error on SocketConnectPort: %v", err)
3535
}
3636

37-
var reconnectInterval int = 30 // Default configuration (in seconds)
37+
reconnectInterval := 30 // Default configuration (in seconds)
3838
if s.HasSetting(config.ReconnectInterval) {
3939
if reconnectInterval, err = s.IntSetting(config.ReconnectInterval); err != nil {
4040
return fmt.Errorf("error on ReconnectInterval: %v", err)

session.go

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ type session struct {
3939
targetDefaultApplVerID string
4040
}
4141

42+
func (s *session) logError(err error) {
43+
s.log.OnEvent(err.Error())
44+
}
45+
46+
func (s *session) handleError(err error) sessionState {
47+
s.logError(err)
48+
return latentState{}
49+
}
50+
4251
//TargetDefaultApplicationVersionID returns the default application version ID for messages received by this version.
4352
//Applicable for For FIX.T.1 sessions.
4453
func (s *session) TargetDefaultApplicationVersionID() string {
@@ -307,7 +316,9 @@ func (s *session) handleLogon(msg Message) error {
307316
}
308317

309318
s.log.OnEvent("Responding to logon request")
310-
s.send(reply)
319+
if err := s.send(reply); err != nil {
320+
return err
321+
}
311322
} else {
312323
s.log.OnEvent("Received logon response")
313324
}
@@ -323,8 +334,7 @@ func (s *session) handleLogon(msg Message) error {
323334
}
324335
}
325336

326-
s.store.IncrNextTargetMsgSeqNum()
327-
return nil
337+
return s.store.IncrNextTargetMsgSeqNum()
328338
}
329339

330340
func (s *session) initiateLogout(reason string) {
@@ -561,7 +571,10 @@ func (s *session) run(msgIn chan fixIn, msgOut chan []byte, quit chan bool) {
561571
}
562572

563573
s.log.OnEvent("Sending logon request")
564-
s.send(logon)
574+
if err := s.send(logon); err != nil {
575+
s.logError(err)
576+
return
577+
}
565578
}
566579

567580
fixMsgIn := func(msg Message) {

0 commit comments

Comments
 (0)