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) CntChan = make(chan CntEvent)
QueryChanChan = make(chan QueryChan) QueryChanChan = make(chan QueryChan)
) )
var CriticalSignalChan = make(chan MCState) var ConnSignalChan = make(chan MCState)
var DaemonChanRX = make(chan struct{}) var DaemonChanRX = make(chan struct{})
var DaemonChanTX = make(chan struct{}) var DaemonChanTX = make(chan struct{})

View File

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

10
fsm.go
View File

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