11package quickfix
22
3- type resendState struct {
4- inSession
3+ type resendState struct {}
4+
5+ func (s resendState ) String () string { return "Resend" }
6+
7+ func (s resendState ) IsLoggedOn () bool { return true }
8+
9+ func (s resendState ) Timeout (session * session , event event ) (nextState sessionState ) {
10+ nextState = inSession {}.Timeout (session , event )
11+ switch nextState .(type ) {
12+ case inSession :
13+ nextState = s
14+ case pendingTimeout :
15+ //wrap pendingTimeout in resend. prevents us falling back to inSession if recovering
16+ //from pendingTimeout
17+ nextState = pendingTimeout {s }
18+ }
19+
20+ return
521}
622
7- func (state resendState ) String () string { return "Resend" }
23+ func (s resendState ) VerifyMsgIn (session * session , msg Message ) (err MessageRejectError ) {
24+ return inSession {}.VerifyMsgIn (session , msg )
25+ }
826
9- func (state resendState ) FixMsgIn (session * session , msg Message ) (nextState sessionState ) {
10- return state .handleNextState (session , state .inSession .FixMsgIn (session , msg ))
27+ func (s resendState ) FixMsgIn (session * session , msg Message ) (nextState sessionState ) {
28+ session .log .OnEventf ("Got FIXMsgIn in resend %s" , msg .rawMessage )
29+ return s .handleNextState (session , inSession {}.FixMsgIn (session , msg ))
1130}
1231
13- func (state resendState ) FixMsgInRej (session * session , msg Message , rej MessageRejectError ) (nextState sessionState ) {
14- return state .handleNextState (session , state . inSession .FixMsgInRej (session , msg , rej ))
32+ func (s resendState ) FixMsgInRej (session * session , msg Message , rej MessageRejectError ) (nextState sessionState ) {
33+ return s .handleNextState (session , inSession {} .FixMsgInRej (session , msg , rej ))
1534}
1635
17- func (state resendState ) handleNextState (session * session , nextState sessionState ) sessionState {
36+ func (s resendState ) handleNextState (session * session , nextState sessionState ) sessionState {
1837 if ! nextState .IsLoggedOn () || len (session .messageStash ) == 0 {
1938 return nextState
2039 }
@@ -25,5 +44,5 @@ func (state resendState) handleNextState(session *session, nextState sessionStat
2544 session .resendIn <- msg
2645 }
2746
28- return resendState {}
47+ return s
2948}
0 commit comments