Skip to content
GitLab
    • Explore Projects Groups Snippets
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • Q quickfix
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 48
    • Issues 48
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 25
    • Merge requests 25
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Infrastructure Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • quickfixgo
  • quickfix
  • Merge requests
  • !505

Fix login resequence

  • Review changes

  • Download
  • Email patches
  • Plain diff
Closed Administrator requested to merge github/fork/avislash/fix_login_resequence into main 2 years ago
  • Overview 0
  • Commits 3
  • Pipelines 0
  • Changes 2

Created by: zbup

Compare
  • main (base)

and
  • latest version
    c51c3681
    3 commits, 2 years ago

2 files
+ 45
- 4

    Preferences

    File browser
    Compare changes
logon_s‎tate.go‎ +23 -0
sessi‎on.go‎ +22 -4
logon_state.go
+ 23
- 0
  • View file @ c51c3681


@@ -2,6 +2,8 @@ package quickfix
import (
"bytes"
"strconv"
"strings"
"github.com/quickfixgo/quickfix/internal"
)
@@ -11,11 +13,32 @@ type logonState struct{ connectedNotLoggedOn }
func (s logonState) String() string { return "Logon State" }
func (s logonState) FixMsgIn(session *session, msg *Message) (nextState sessionState) {
//fmt.Println("In Logon State Fix Msg")
msgType, err := msg.Header.GetBytes(tagMsgType)
if err != nil {
return handleStateError(session, err)
}
if bytes.Equal(msgType, msgTypeLogout) {
var textField FIXString
msg.Body.GetField(tagText, &textField)
//fmt.Println("TextField: ", textField)
// Handle sequence number reordering
if textSlice := strings.Split(string(textField), "expecting"); len(textSlice) > 1 {
//fmt.Println("Text slice: ", textSlice)
seqNumSlice := strings.Split(textSlice[1], "but")
seqNumString := strings.Trim(seqNumSlice[0], " ")
//fmt.Printf("New Seq Num needs to be:%s\n", seqNumString)
seqNum, _ := strconv.Atoi(seqNumString)
//fmt.Printf("Converted SeqNum: %d type %T\n", seqNum, seqNum)
session.store.SetNextSenderMsgSeqNum(seqNum)
}
return latentState{}
}
if !bytes.Equal(msgType, msgTypeLogon) {
session.log.OnEventf("Invalid Session State: Received Msg %s while waiting for Logon", msg)
return latentState{}
session.go
+ 22
- 4
  • View file @ c51c3681


@@ -11,6 +11,16 @@ import (
"github.com/quickfixgo/quickfix/internal"
)
type Debugger interface {
Debugf(fmt string, args ...interface{})
}
type noopDebugger struct{}
func (n noopDebugger) Debugf(_ string, _ ...interface{}) {}
var Debug Debugger = noopDebugger{}
//The Session is the primary FIX abstraction for message communication
type session struct {
store MessageStore
@@ -762,23 +772,31 @@ func (s *session) run() {
select {
case msg := <-s.admin:
Debug.Debugf("Processing admin message")
s.onAdmin(msg)
Debug.Debugf("Done processing admin message")
case <-s.messageEvent:
Debug.Debugf("Processing message event")
s.SendAppMessages(s)
Debug.Debugf("Done processing message event")
case fixIn, ok := <-s.messageIn:
Debug.Debugf("Processing inbound message")
if !ok {
Debug.Debugf("Handling disconnected")
s.Disconnected(s)
} else {
Debug.Debugf("Handling incoming")
s.Incoming(s, fixIn)
}
Debug.Debugf("Done processing message")
case evt := <-s.sessionEvent:
Debug.Debugf("Processing session event")
s.Timeout(s, evt)
Debug.Debugf("Done processing session event")
case now := <-ticker.C:
Debug.Debugf("Checking session")
s.CheckSessionTime(s, now)
Debug.Debugf("Done checking session")
}
}
}
0 Assignees
None
Assign to
0 Reviewers
None
Request review from
Labels
0
None
0
None
    Assign labels
  • Manage project labels

Milestone
No milestone
None
None
Time tracking
No estimate or time spent
Lock merge request
Unlocked
1
1 participant
Administrator
Reference: quickfixgo/quickfix!505
Source branch: github/fork/avislash/fix_login_resequence

Menu

Explore Projects Groups Snippets