- Copied complete Lts/Tools directory from qt5-before to qt6-after - Updated 32 CMakeLists.txt files (Qt5:: → Qt6::) - Tools subdirectory already included in parent Lts/CMakeLists.txt - All 72 tool submodules now present in qt6-migrated-legatus - Includes: Adler, ArAssets, ConfigX, DBAdministration, DBUpdate, DdsView, InfrastructureManagement, and 67 more tools - C++17 standard (RTI 7.7.0 compatibility maintained) - Tests deferred until final validation phase Migration progress: ✅ Lts/Application (68 files) ✅ Lts/DDS (verified Qt6-ready) ✅ Lts/Plugins (60 submodules, verified) ✅ Lts/Projects (5 submodules, verified) ✅ Lts/Proxies (13 submodules, verified) ✅ Lts/Services (47 submodules, verified) ✅ Lts/Tools (72 submodules, copied + CMake updated) ✅ Lts/Viewer (LtsFileDialog, LtsReportDisplay, SituationMap) 🟡 TetraIF (partial) 🟡 Z (partial: nglwidgets, QtSingleApplication, qsql_informix, WMS_Interface)
86 lines
2.4 KiB
Go
Executable File
86 lines
2.4 KiB
Go
Executable File
package websocket
|
|
|
|
import (
|
|
"fmt"
|
|
participanthandler "legatus-rme/backend/participantHandler"
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/go-playground/validator/v10"
|
|
)
|
|
|
|
func (s *Server) participantHandler(w http.ResponseWriter, r *http.Request) {
|
|
c, err := s.Upgrader.Upgrade(w, r, nil)
|
|
if err != nil {
|
|
log.Println("Websocket Server - Error upgrading connection:", err)
|
|
return
|
|
}
|
|
defer c.Close()
|
|
|
|
for {
|
|
var req ParticipantHandlerWebsocketRequestWithoutData
|
|
if err := c.ReadJSON(&req); err != nil {
|
|
c.WriteJSON(&ErrorWebsocketResponse{
|
|
Error: err.Error(),
|
|
})
|
|
return
|
|
}
|
|
|
|
if req.Type != "getAllParticipants" {
|
|
req2 := ParticipantHandlerWebsocketRequest(req)
|
|
err = validator.New().Struct(req2)
|
|
if err != nil {
|
|
c.WriteJSON(&ErrorWebsocketResponse{
|
|
Error: err.Error(),
|
|
})
|
|
return
|
|
}
|
|
} else {
|
|
err = validator.New().Struct(req)
|
|
if err != nil {
|
|
c.WriteJSON(&ErrorWebsocketResponse{
|
|
Error: err.Error(),
|
|
})
|
|
return
|
|
}
|
|
}
|
|
|
|
var (
|
|
participantHandlerByExcersiseId participanthandler.ParticipantHandler
|
|
ok bool
|
|
)
|
|
if participantHandlerByExcersiseId, ok = s.ParticipantHandlers[req.ExcerciseId]; !ok {
|
|
participantHandlerByExcersiseId = OpenWebsocket("participantHandler", []int{s.ExerciseServicePortMap[fmt.Sprintf("%d-ParticipantManagement1", req.ExcerciseId)], req.ExcerciseId * 102}).(participanthandler.ParticipantHandler)
|
|
}
|
|
|
|
switch req.Type {
|
|
case "checkIfParticipantIsValid":
|
|
participantData := participantHandlerByExcersiseId.CheckIfParticipantIsValid(req.ParticipantData.ParticipantId)
|
|
c.WriteJSON(&participantData)
|
|
continue
|
|
case "getAllParticipants":
|
|
participantData := participantHandlerByExcersiseId.GetAllParticipants()
|
|
c.WriteJSON(&participantData)
|
|
continue
|
|
case "changeAbcProtection":
|
|
if err := participantHandlerByExcersiseId.ChangeAbcProtection(req.ParticipantData.ParticipantId, req.ParticipantData.AbcProtection); err != nil {
|
|
c.WriteJSON(&ErrorWebsocketResponse{
|
|
Error: err.Error(),
|
|
})
|
|
}
|
|
c.WriteJSON(req.ParticipantData)
|
|
continue
|
|
case "changePosition":
|
|
if err := participantHandlerByExcersiseId.ChangePosition(req.ParticipantData.ParticipantId, &participanthandler.GeoPosition{
|
|
Lat: req.ParticipantData.Positions[0].Lat,
|
|
Lng: req.ParticipantData.Positions[0].Lng,
|
|
}); err != nil {
|
|
c.WriteJSON(&ErrorWebsocketResponse{
|
|
Error: err.Error(),
|
|
})
|
|
}
|
|
continue
|
|
}
|
|
}
|
|
}
|