From eccd8279958fa955397b468f374187c05bf7c3d9 Mon Sep 17 00:00:00 2001 From: MahnoKropotkinvich Date: Tue, 24 Dec 2024 19:14:38 +0800 Subject: [PATCH] fsm bugs fixed --- chan.go | 2 +- conn.go | 2 +- fsm.go | 10 +++++++--- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/chan.go b/chan.go index d7a85cf..028023e 100644 --- a/chan.go +++ b/chan.go @@ -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{}) diff --git a/conn.go b/conn.go index 6debf8b..aa6a35a 100644 --- a/conn.go +++ b/conn.go @@ -29,7 +29,7 @@ var clientSignalChan = NewDynamicMultiChan[MCState](false, 2) func bridge() { for { - msg, _ := <-CriticalSignalChan + msg, _ := <-ConnSignalChan clientSignalChan.TX <- msg } } diff --git a/fsm.go b/fsm.go index 827a77c..8141381 100644 --- a/fsm.go +++ b/fsm.go @@ -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]) }