rs2322tcp/cmd/rs2322tcp-server/main.go
2026-08-11 13:26:05 +02:00

66 lines
1.2 KiB
Go

/*
Package main implements the rs2322tcp server application.
The server provides the network endpoint for rs2322tcp clients
and connects incoming data connections to configured physical
RS232 interfaces.
Project: rs2322tcp
Module: git.lang-dieter.de/rs2322tcp
*/
package main
import (
"flag"
"fmt"
"log"
"git.lang-dieter.de/rs2322tcp/internal/config"
"git.lang-dieter.de/rs2322tcp/internal/server"
"git.lang-dieter.de/rs2322tcp/internal/version"
)
func main() {
configFile := flag.String(
"config",
"./configs/server.json",
"Pfad zur Server-Konfigurationsdatei",
)
flag.Parse()
cfg, err := config.LoadServer(*configFile)
if err != nil {
log.Fatalf("Server-Konfiguration laden: %v", err)
}
controlServer, err := server.NewControlServer(cfg)
if err != nil {
log.Fatalf("Control-Server erstellen: %v", err)
}
if err := controlServer.Listen(); err != nil {
log.Fatalf("Control-Server starten: %v", err)
}
defer controlServer.Close()
fmt.Printf(
"rs2322tcp-server %s\n",
version.Version,
)
fmt.Printf(
"Control-Server gestartet auf %s\n",
controlServer.Addr(),
)
fmt.Printf(
"Geräte: %d\n",
len(cfg.Devices),
)
if err := controlServer.Serve(); err != nil {
log.Fatalf("Control-Server beendet: %v", err)
}
}