Skip to content

Commit f1e8702

Browse files
committed
Use new http server and simplify config.toml
1 parent a9ee880 commit f1e8702

7 files changed

Lines changed: 39 additions & 326 deletions

File tree

backend/cmd/config.toml

Lines changed: 1 addition & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,11 @@ pod_data = "/podDataStructure"
88
order_data = "/orderStructures"
99
programable_boards = "/uploadableBoards"
1010
connections = "/backend"
11-
file_server = "/"
11+
files = "/"
1212

1313
[vehicle]
1414
boards = ["VCU"]
1515

16-
[vehicle.network]
17-
tcp_client_tag = "TCP_CLIENT"
18-
tcp_server_tag = "TCP_SERVER"
19-
udp_tag = "UDP"
20-
# sniffer = { mtu = 1500, interface = "lo" }
21-
mtu = 1500
22-
interface = "lo"
23-
# blcu_ack_id = "blcu_ack"
24-
timeout = "1s"
25-
26-
[vehicle.messages]
27-
info_id_key = "info"
28-
fault_id_key = "fault"
29-
warning_id_key = "warning"
30-
error_id_key = "error"
31-
blcu_ack_id_key = "blcu_ack"
32-
add_state_orders_id_key = "add_state_orders"
33-
remove_state_orders_id_key = "remove_state_orders"
34-
3516
[excel.download]
3617
id="1NyNaAOw_6iWtnCpEg73AtSSFx1fMdhPRmmdOhjgjCZI"
3718
name = "ade.xlsx"
@@ -49,49 +30,3 @@ units_table = "units"
4930
ports_table = "ports"
5031
board_ids_table = "board_ids"
5132
message_ids_table = "message_ids"
52-
53-
[logger_handler]
54-
topics = { enable = "logger/enable" }
55-
base_path = "log"
56-
flush_interval = "5s"
57-
58-
[packet_logger]
59-
file_name = "packets"
60-
flush_interval = "5s"
61-
62-
[value_logger]
63-
folder_name = "values"
64-
flush_interval = "5s"
65-
66-
[order_logger]
67-
file_name = "orders"
68-
flush_interval = "5s"
69-
70-
[protection_logger]
71-
file_name = "protections"
72-
flush_interval = "5s"
73-
74-
[orders]
75-
send_topic = "order/send"
76-
77-
[messages]
78-
update_topic = "message/update"
79-
80-
[data_transfer]
81-
fps = 20
82-
topics = { update = "podData/update" }
83-
84-
[connections]
85-
update_topic = "connection/update"
86-
87-
[blcu]
88-
download_path = "downloads"
89-
90-
[blcu.packets]
91-
upload = { id = 700, field = "write_board" }
92-
download = { id = 701, field = "read_board" }
93-
ack = { name = "tftp_ack" }
94-
95-
[blcu.topics]
96-
upload = "blcu/upload"
97-
download = "blcu/download"

backend/cmd/main.go

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"github.com/HyperloopUPV-H8/h9-backend/internal/excel/utils"
2222
"github.com/HyperloopUPV-H8/h9-backend/internal/info"
2323
"github.com/HyperloopUPV-H8/h9-backend/internal/pod_data"
24-
"github.com/HyperloopUPV-H8/h9-backend/internal/server"
2524
"github.com/HyperloopUPV-H8/h9-backend/internal/update_factory"
2625
vehicle_models "github.com/HyperloopUPV-H8/h9-backend/internal/vehicle/models"
2726
"github.com/HyperloopUPV-H8/h9-backend/pkg/abstraction"
@@ -31,6 +30,12 @@ import (
3130
logger_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/logger"
3231
message_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/message"
3332
order_topic "github.com/HyperloopUPV-H8/h9-backend/pkg/broker/topics/order"
33+
h "github.com/HyperloopUPV-H8/h9-backend/pkg/http"
34+
"github.com/HyperloopUPV-H8/h9-backend/pkg/logger"
35+
data_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/data"
36+
messages_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/messages"
37+
order_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/order"
38+
state_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/state"
3439
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport"
3540
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/sniffer"
3641
"github.com/HyperloopUPV-H8/h9-backend/pkg/transport/network/tcp"
@@ -47,12 +52,6 @@ import (
4752
"github.com/google/gopacket/pcap"
4853
"github.com/pelletier/go-toml/v2"
4954
trace "github.com/rs/zerolog/log"
50-
51-
"github.com/HyperloopUPV-H8/h9-backend/pkg/logger"
52-
data_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/data"
53-
messages_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/messages"
54-
order_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/order"
55-
state_logger "github.com/HyperloopUPV-H8/h9-backend/pkg/logger/state"
5655
)
5756

5857
var traceLevel = flag.String("trace", "info", "set the trace level (\"fatal\", \"error\", \"warn\", \"info\", \"debug\", \"trace\")")
@@ -106,7 +105,6 @@ func main() {
106105
trace.Fatal().Err(err).Msg("Error selecting device")
107106
panic(err)
108107
}
109-
config.Vehicle.Network.Interface = dev.Name
110108

111109
vehicleOrders, err := vehicle_models.NewVehicleOrders(podData.Boards, config.Excel.Parse.Global.BLCUAddressKey)
112110
if err != nil {
@@ -224,36 +222,41 @@ func main() {
224222
vehicle.SetTransport(transp)
225223

226224
// <--- http server --->
225+
podDataHandle, err := h.HandleDataJSON("podData.json", pod_data.GetDataOnlyPodData(podData))
226+
if err != nil {
227+
fmt.Fprintf(os.Stderr, "error creating podData handler: %v\n", err)
228+
}
229+
orderDataHandle, err := h.HandleDataJSON("orderData.json", vehicleOrders)
230+
if err != nil {
231+
fmt.Fprintf(os.Stderr, "error creating orderData handler: %v\n", err)
232+
}
227233
uploadableBords := common.Filter(common.Keys(info.Addresses.Boards), func(item string) bool {
228234
return item != config.Excel.Parse.Global.BLCUAddressKey
229235
})
230-
231-
endpointData := server.EndpointData{
232-
PodData: pod_data.GetDataOnlyPodData(podData),
233-
OrderData: vehicleOrders,
234-
ProgramableBoards: uploadableBords,
235-
}
236-
237-
serverHandler, err := server.New(upgrader, endpointData, config.Server)
236+
programableBoardsHandle, err := h.HandleDataJSON("programableBoards.json", uploadableBords)
238237
if err != nil {
239-
trace.Fatal().Err(err).Msg("Error creating server")
240-
panic(err)
238+
fmt.Fprintf(os.Stderr, "error creating programableBoards handler: %v\n", err)
241239
}
242240

243-
errs := serverHandler.ListenAndServe()
241+
for _, server := range config.Server {
242+
mux := h.NewMux(
243+
h.Endpoint("/backend"+server.Endpoints.PodData, podDataHandle),
244+
h.Endpoint("/backend"+server.Endpoints.OrderData, orderDataHandle),
245+
h.Endpoint("/backend"+server.Endpoints.ProgramableBoards, programableBoardsHandle),
246+
h.Endpoint(server.Endpoints.Connections, upgrader),
247+
h.Endpoint(server.Endpoints.Files, h.HandleStatic(server.StaticPath)),
248+
)
249+
250+
httpServer := h.NewServer(server.Addr, mux)
251+
go httpServer.ListenAndServe()
252+
}
244253

245254
interrupt := make(chan os.Signal, 1)
246255
signal.Notify(interrupt, os.Interrupt)
247256

248-
for {
249-
select {
250-
case err := <-errs:
251-
trace.Error().Err(err).Msg("Error in server")
252-
253-
case <-interrupt:
254-
trace.Info().Msg("Shutting down")
255-
return
256-
}
257+
for range interrupt {
258+
trace.Info().Msg("Shutting down")
259+
return
257260
}
258261
}
259262

backend/internal/server/config.go

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ package server
33
type Config map[string]ServerConfig
44

55
type ServerConfig struct {
6-
Addr string `toml:"address" default:"localhost:4000"`
7-
MaxConnections *int32 `toml:"client_limit,omitempty"`
8-
Endpoints EndpointConfig `toml:"endpoints"`
9-
StaticPath string `toml:"static" default:"./static"`
6+
Addr string `toml:"address" default:"localhost:4000"`
7+
Endpoints EndpointConfig `toml:"endpoints"`
8+
StaticPath string `toml:"static" default:"./static"`
109
}
1110

1211
type EndpointConfig struct {
@@ -16,9 +15,3 @@ type EndpointConfig struct {
1615
Connections string `toml:"connections" default:"/backend"`
1716
Files string `toml:"files" default:"/"`
1817
}
19-
20-
type EndpointData struct {
21-
PodData any
22-
OrderData any
23-
ProgramableBoards any
24-
}

backend/internal/server/handler.go

Lines changed: 0 additions & 69 deletions
This file was deleted.

backend/internal/server/server.go

Lines changed: 0 additions & 98 deletions
This file was deleted.

0 commit comments

Comments
 (0)