fsm bugs fixed
This commit is contained in:
parent
42d2933f99
commit
eccd827995
2
chan.go
2
chan.go
@ -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{})
|
||||||
|
|||||||
2
conn.go
2
conn.go
@ -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
10
fsm.go
@ -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])
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user