rts-sim-testing-service/message_server/simulation_state_ms.go
2023-12-25 14:25:24 +08:00

29 lines
856 B
Go

package message_server
import (
"joylink.club/bj-rtsts-server/message_server/ms_api"
"joylink.club/bj-rtsts-server/mqtt"
"joylink.club/bj-rtsts-server/ts/protos/state"
"joylink.club/bj-rtsts-server/ts/simulation/wayside/memory"
"joylink.club/ecs"
)
func NewStateMs(vs *memory.VerifySimulation) ms_api.MsgTask {
return ms_api.NewMonitorTask("仿真状态", func() {
ecs.WorldStateChangeEvent.Subscribe(vs.World, func(_ ecs.World, e ecs.WorldStateChange) {
s := &state.SimulationStatus{SimulationId: vs.SimulationId}
switch e.NewState {
case ecs.WorldClosed:
s.State = state.SimulationStatus_DESTROY
case ecs.WorldError:
s.State = state.SimulationStatus_ERROR
case ecs.WorldPause:
s.State = state.SimulationStatus_PAUSE
default:
return
}
mqtt.GetMsgClient().PubSimulationState(vs.SimulationId, s)
})
})
}