parse messages

This commit is contained in:
Travis Shears 2025-12-22 09:23:12 +01:00
parent 65ad286add
commit 0897210754
Signed by: travisshears
GPG key ID: CB9BF1910F3F7469
5 changed files with 193 additions and 2 deletions

View file

@ -1,18 +1,48 @@
package main
import (
"fmt"
"io"
"log/slog"
"net"
"os"
"strconv"
"strings"
)
type Message struct {
ID int
Data []string
}
func ParseMsg(msg string) (*Message, error) {
parts := strings.Split(msg, ",")
msgIdStr := parts[0]
if !strings.HasPrefix(msgIdStr, "M") {
return nil, fmt.Errorf("message must start with 'M' prefix")
}
msgIdStr = strings.TrimPrefix(msgIdStr, "M")
msgId, err := strconv.Atoi(msgIdStr)
if err != nil {
return nil, err
}
msgData := make([]string, len(parts)-1)
for i, data := range parts[1:] {
msgData[i] = strings.TrimSpace(data)
}
message := &Message{
ID: msgId,
Data: msgData,
}
return message, nil
}
func main() {
// Initialize JSON logger
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
slog.SetDefault(logger)
addr := "192.168.1.153:8080"
addr := "0.0.0.0:8080"
slog.Info("Starting TCP server", "address", addr)
//Resolve address
@ -60,7 +90,14 @@ func handleConnection(conn *net.TCPConn) {
if n == 0 {
return
}
slog.Info("Received message", "message", string(buffer[:n]), "bytes", n)
msgStr := string(buffer[:n])
slog.Info("Received message", "message", msgStr, "bytes", n)
msg, err := ParseMsg(msgStr)
if err != nil {
slog.Error("Error parsing message", "error", err)
return
}
slog.Info("Parsed message", "message", msg)
//Echo message back
// _, err = conn.Write(buffer[:n])