fsm bugs fixed

This commit is contained in:
MahnoKropotkinvich 2024-12-24 19:14:38 +08:00
parent 42d2933f99
commit eccd827995
3 changed files with 9 additions and 5 deletions

View File

@ -8,7 +8,7 @@ var (
CntChan = make(chan CntEvent)
QueryChanChan = make(chan QueryChan)
)
var CriticalSignalChan = make(chan MCState)
var ConnSignalChan = make(chan MCState)
var DaemonChanRX = make(chan struct{})
var DaemonChanTX = make(chan struct{})

View File

@ -29,7 +29,7 @@ var clientSignalChan = NewDynamicMultiChan[MCState](false, 2)
func bridge() {
for {
msg, _ := <-CriticalSignalChan
msg, _ := <-ConnSignalChan
clientSignalChan.TX <- msg
}
}

10
fsm.go
View File

@ -78,6 +78,7 @@ func stoppingThread() {
DaemonChanTX <- struct{}{}
<-DaemonChanRX
<-DaemonChanRX
ConnSignalChan <- STOPPING
handleStoppingToStopped()
}
func handleStoppingToStopped() {
@ -91,15 +92,17 @@ func bootingThread() {
handleBootingToRunning()
}
var runningChan chan struct{}
func handleBootingToRunning() {
GetLogger().Infof("Server is currently at %s state", stateToStr[RUNNING])
state = RUNNING
CriticalSignalChan <- RUNNING
ConnSignalChan <- RUNNING
}
func handleStoppedToBooting() {
GetLogger().Infof("Server is currently at %s state", stateToStr[BOOTING])
go bootingThread()
state = BOOTING
bootingThread()
}
func waitingThread() {
defer close(waitChan)
@ -203,6 +206,7 @@ func handleState() { //goroutine only, handles both write and read
// case BOOTING: //shouldn't be there too
case WAITING:
handleWaitingToRunning()
//case RUNNING:
default:
panic("handleState():written wrong!" + stateToStr[state])
}
@ -210,7 +214,7 @@ func handleState() { //goroutine only, handles both write and read
switch state {
case RUNNING:
handleRunningToWaiting()
case BOOTING:
//case BOOTING:
default:
panic("handleState():written wrong!" + stateToStr[state])
}