Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 14 additions & 14 deletions in_session.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
type inSession struct {
}

func (state inSession) FixMsgIn(session *Session, msg Message) (nextState sessionState) {
func (state inSession) FixMsgIn(session *session, msg Message) (nextState sessionState) {
var msgType FIXString
if err := msg.Header.GetField(tagMsgType, &msgType); err == nil {
switch string(msgType) {
Expand Down Expand Up @@ -39,7 +39,7 @@ func (state inSession) FixMsgIn(session *Session, msg Message) (nextState sessio
return state
}

func (state inSession) Timeout(session *Session, event event) (nextState sessionState) {
func (state inSession) Timeout(session *session, event event) (nextState sessionState) {
switch event {
case needHeartbeat:
heartBt := NewMessage()
Expand All @@ -56,23 +56,23 @@ func (state inSession) Timeout(session *Session, event event) (nextState session
return state
}

func (state inSession) handleLogon(session *Session, msg Message) (nextState sessionState) {
func (state inSession) handleLogon(session *session, msg Message) (nextState sessionState) {
if err := session.handleLogon(msg); err != nil {
return state.initiateLogout(session, "")
}

return state
}

func (state inSession) handleLogout(session *Session, msg Message) (nextState sessionState) {
func (state inSession) handleLogout(session *session, msg Message) (nextState sessionState) {
session.log.OnEvent("Received logout request")
state.generateLogout(session)
session.application.OnLogout(session.sessionID)

return latentState{}
}

func (state inSession) handleSequenceReset(session *Session, msg Message) (nextState sessionState) {
func (state inSession) handleSequenceReset(session *session, msg Message) (nextState sessionState) {
var gapFillFlag FIXBoolean
msg.Body.GetField(tagGapFillFlag, &gapFillFlag)

Expand All @@ -97,7 +97,7 @@ func (state inSession) handleSequenceReset(session *Session, msg Message) (nextS
return state
}

func (state inSession) handleResendRequest(session *Session, msg Message) (nextState sessionState) {
func (state inSession) handleResendRequest(session *session, msg Message) (nextState sessionState) {
if err := session.verifyIgnoreSeqNumTooHighOrLow(msg); err != nil {
return state.processReject(session, msg, err)
}
Expand Down Expand Up @@ -131,7 +131,7 @@ func (state inSession) handleResendRequest(session *Session, msg Message) (nextS
return state
}

func (state inSession) resendMessages(session *Session, beginSeqNo, endSeqNo int) {
func (state inSession) resendMessages(session *session, beginSeqNo, endSeqNo int) {
msgs := session.store.GetMessages(beginSeqNo, endSeqNo)

seqNum := beginSeqNo
Expand Down Expand Up @@ -172,7 +172,7 @@ func (state inSession) resendMessages(session *Session, beginSeqNo, endSeqNo int
}
}

func (state inSession) handleTestRequest(session *Session, msg Message) (nextState sessionState) {
func (state inSession) handleTestRequest(session *session, msg Message) (nextState sessionState) {
if err := session.verify(msg); err != nil {
return state.processReject(session, msg, err)
}
Expand All @@ -192,7 +192,7 @@ func (state inSession) handleTestRequest(session *Session, msg Message) (nextSta
return state
}

func (state inSession) processReject(session *Session, msg Message, rej MessageRejectError) (nextState sessionState) {
func (state inSession) processReject(session *session, msg Message, rej MessageRejectError) (nextState sessionState) {
switch TypedError := rej.(type) {
case targetTooHigh:

Expand Down Expand Up @@ -222,7 +222,7 @@ func (state inSession) processReject(session *Session, msg Message, rej MessageR
}
}

func (state inSession) doTargetTooLow(session *Session, msg Message, rej targetTooLow) (nextState sessionState) {
func (state inSession) doTargetTooLow(session *session, msg Message, rej targetTooLow) (nextState sessionState) {
var posDupFlag FIXBoolean
if err := msg.Header.GetField(tagPossDupFlag, &posDupFlag); err == nil && posDupFlag {

Expand Down Expand Up @@ -251,14 +251,14 @@ func (state inSession) doTargetTooLow(session *Session, msg Message, rej targetT
return state
}

func (state *inSession) initiateLogout(session *Session, reason string) (nextState logoutState) {
func (state *inSession) initiateLogout(session *session, reason string) (nextState logoutState) {
state.generateLogoutWithReason(session, reason)
time.AfterFunc(time.Duration(2)*time.Second, func() { session.sessionEvent <- logoutTimeout })

return
}

func (state *inSession) generateSequenceReset(session *Session, beginSeqNo int, endSeqNo int) {
func (state *inSession) generateSequenceReset(session *session, beginSeqNo int, endSeqNo int) {
sequenceReset := NewMessage()
session.fillDefaultHeader(sequenceReset)

Expand All @@ -278,11 +278,11 @@ func (state *inSession) generateSequenceReset(session *Session, beginSeqNo int,
session.sendBytes(msgBytes)
}

func (state *inSession) generateLogout(session *Session) {
func (state *inSession) generateLogout(session *session) {
state.generateLogoutWithReason(session, "")
}

func (state *inSession) generateLogoutWithReason(session *Session, reason string) {
func (state *inSession) generateLogoutWithReason(session *session, reason string) {
reply := NewMessage()
reply.Header.SetField(tagMsgType, FIXString("5"))
reply.Header.SetField(tagBeginString, FIXString(session.sessionID.BeginString))
Expand Down
4 changes: 2 additions & 2 deletions latent_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package quickfix

type latentState struct{}

func (state latentState) FixMsgIn(session *Session, msg Message) (nextState sessionState) {
func (state latentState) FixMsgIn(session *session, msg Message) (nextState sessionState) {
session.log.OnEventf("Invalid Session State: Unexpected Msg %v while in Latent state", msg)
return state
}

func (state latentState) Timeout(*Session, event) (nextState sessionState) {
func (state latentState) Timeout(*session, event) (nextState sessionState) {
return state
}
4 changes: 2 additions & 2 deletions logon_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package quickfix

type logonState struct{}

func (s logonState) FixMsgIn(session *Session, msg Message) (nextState sessionState) {
func (s logonState) FixMsgIn(session *session, msg Message) (nextState sessionState) {
var msgType FIXString
if err := msg.Header.GetField(tagMsgType, &msgType); err == nil && string(msgType) == "A" {
if err := session.handleLogon(msg); err != nil {
Expand All @@ -17,7 +17,7 @@ func (s logonState) FixMsgIn(session *Session, msg Message) (nextState sessionSt
return latentState{}
}

func (s logonState) Timeout(session *Session, e event) (nextState sessionState) {
func (s logonState) Timeout(session *session, e event) (nextState sessionState) {
if e == logonTimeout {
session.log.OnEvent("Timed out waiting for logon response")
return latentState{}
Expand Down
4 changes: 2 additions & 2 deletions logout_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ package quickfix
type logoutState struct {
}

func (state logoutState) FixMsgIn(session *Session, msg Message) (nextState sessionState) {
func (state logoutState) FixMsgIn(session *session, msg Message) (nextState sessionState) {
return state
}

func (state logoutState) Timeout(session *Session, event event) (nextState sessionState) {
func (state logoutState) Timeout(session *session, event event) (nextState sessionState) {
switch event {
case logoutTimeout:
session.log.OnEvent("Timed out waiting for Logout response")
Expand Down
2 changes: 1 addition & 1 deletion message_router.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func (c MessageRouter) tryRoute(beginString FIXString, msgType FIXString, msg Me
if string(beginString) == enum.BeginStringFIXT11 && !isAdminMessageType(string(msgType)) {
var applVerID FIXString
if err := msg.Header.GetField(tagApplVerID, &applVerID); err != nil {
session, _ := LookupSession(sessionID)
session, _ := lookupSession(sessionID)
applVerID = FIXString(session.TargetDefaultApplicationVersionID())
}

Expand Down
2 changes: 1 addition & 1 deletion pending_timeout.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ type pendingTimeout struct {
inSession
}

func (currentState pendingTimeout) Timeout(session *Session, event event) (nextState sessionState) {
func (currentState pendingTimeout) Timeout(session *session, event event) (nextState sessionState) {
switch event {
case peerTimeout:
session.log.OnEvent("Session Timeout")
Expand Down
20 changes: 10 additions & 10 deletions registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ func Send(m Marshaler) (err error) {
//SendToTarget sends a message based on the sessionID. Convenient for use in FromApp since it provides a session ID for incoming messages
func SendToTarget(m Marshaler, sessionID SessionID) error {
msg := m.Marshal()
session, err := LookupSession(sessionID)
session, err := lookupSession(sessionID)
if err != nil {
return err
}
Expand All @@ -48,16 +48,16 @@ func SendToTarget(m Marshaler, sessionID SessionID) error {

type sessionActivate struct {
SessionID
reply chan *Session
reply chan *session
}

type sessionResource struct {
session *Session
session *session
active bool
}

type sessionLookupResponse struct {
session *Session
session *session
err error
}

Expand All @@ -67,7 +67,7 @@ type sessionLookup struct {
}

type registry struct {
newSession chan *Session
newSession chan *session
activate chan sessionActivate
deactivate chan SessionID
lookup chan sessionLookup
Expand All @@ -77,16 +77,16 @@ var sessions *registry

func init() {
sessions = new(registry)
sessions.newSession = make(chan *Session)
sessions.newSession = make(chan *session)
sessions.activate = make(chan sessionActivate)
sessions.deactivate = make(chan SessionID)
sessions.lookup = make(chan sessionLookup)

go sessions.sessionResourceServerLoop()
}

func activate(sessionID SessionID) *Session {
response := make(chan *Session)
func activate(sessionID SessionID) *session {
response := make(chan *session)
sessions.activate <- sessionActivate{sessionID, response}
return <-response
}
Expand All @@ -95,8 +95,8 @@ func deactivate(sessionID SessionID) {
sessions.deactivate <- sessionID
}

//LookupSession returns the Session associated with the sessionID.
func LookupSession(sessionID SessionID) (*Session, error) {
//lookupSession returns the Session associated with the sessionID.
func lookupSession(sessionID SessionID) (*session, error) {
responseChannel := make(chan sessionLookupResponse)
sessions.lookup <- sessionLookup{sessionID, responseChannel}

Expand Down
2 changes: 1 addition & 1 deletion resend_state.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ type resendState struct {
inSession
}

func (state resendState) FixMsgIn(session *Session, msg Message) (nextState sessionState) {
func (state resendState) FixMsgIn(session *session, msg Message) (nextState sessionState) {
for ok := true; ok; {
nextState = state.inSession.FixMsgIn(session, msg)

Expand Down
Loading