rts-sim-testing-service/third_party/third_party.go

79 lines
2.3 KiB
Go
Raw Normal View History

package third_party
import (
2024-04-13 09:40:25 +08:00
"joylink.club/bj-rtsts-server/third_party/train_pc_sim"
"log/slog"
"joylink.club/bj-rtsts-server/dto/state_proto"
"joylink.club/bj-rtsts-server/third_party/dynamics"
"joylink.club/bj-rtsts-server/third_party/semi_physical_train"
"joylink.club/bj-rtsts-server/third_party/tpapi"
)
var tpapiService []tpapi.ThirdPartyApiService
func Init() {
tpapiService = append(
tpapiService, dynamics.Default(),
semi_physical_train.Default(),
2024-04-13 09:40:25 +08:00
train_pc_sim.Default(),
)
}
func GetAllServices() []tpapi.ThirdPartyApiService {
return tpapiService
}
func convertServiceName(name string) state_proto.SimulationThirdPartyApiService_Type {
switch name {
case dynamics.Name:
return state_proto.SimulationThirdPartyApiService_Dynamics
case semi_physical_train.Name:
return state_proto.SimulationThirdPartyApiService_SemiPhysicalTrain
2024-04-13 09:40:25 +08:00
case train_pc_sim.Name:
return state_proto.SimulationThirdPartyApiService_Train_pc_sim
2024-01-24 13:25:00 +08:00
default:
return state_proto.SimulationThirdPartyApiService_Undefined
}
}
func GetRunningServiceStates() *state_proto.SimulationThirdPartyApiService {
ss := &state_proto.SimulationThirdPartyApiService{}
for _, tpas := range tpapiService {
if tpas.TrueService() {
collectServiceState(ss, tpas)
} else {
trueServices := tpas.FindAppendApiService()
if trueServices != nil && len(trueServices) > 0 {
for _, trueService := range trueServices {
collectServiceState(ss, trueService)
}
}
2024-04-13 09:40:25 +08:00
}
}
return ss
}
func collectServiceState(ss *state_proto.SimulationThirdPartyApiService, service tpapi.ThirdPartyApiService) {
t := convertServiceName(service.Name())
if t == state_proto.SimulationThirdPartyApiService_Undefined {
slog.Error("未知的第三方接口服务类型", "name", service.Name())
return
}
switch service.State() {
case tpapi.ThirdPartyState_Normal:
ss.States = append(ss.States, &state_proto.SimulationThirdPartyApiServiceState{
Type: t,
ServiceName: service.ServiceDesc(),
State: state_proto.SimulationThirdPartyApiService_Normal,
})
case tpapi.ThirdPartyState_Broken:
ss.States = append(ss.States, &state_proto.SimulationThirdPartyApiServiceState{
Type: t,
ServiceName: service.ServiceDesc(),
State: state_proto.SimulationThirdPartyApiService_Error,
})
}
}