Bulk commit: November work

This commit is contained in:
2025-11-06 11:46:35 +01:00
parent cf82dede3b
commit 183875baf4
60 changed files with 16590 additions and 102 deletions

68
utils/messagebus.go Normal file
View File

@ -0,0 +1,68 @@
package utils
import (
"encoding/json"
"io"
"log/slog"
"github.com/gofiber/contrib/websocket"
)
var MessageBus = &messagebus{mandanten: make(map[int][]*websocket.Conn)}
type messagebus struct {
mandanten map[int][]*websocket.Conn
}
func (mb *messagebus) AddConn(mid int, c *websocket.Conn) {
mb.mandanten[mid] = append(mb.mandanten[mid], c)
ReadLoop(c)
}
func ReadLoop(c *websocket.Conn) {
for {
var t int
var r io.Reader
var err error
if t, r, err = c.NextReader(); err != nil {
c.Close()
break
}
bytes, err := io.ReadAll(r)
slog.Info("READLOOP: ", "Type", t, "value", bytes)
}
}
func (mb *messagebus) SendMBObject(mid int, mbo MessageBusObject) {
bytes, err := json.Marshal(mbo)
if err != nil {
slog.Info("marshal", "error", err)
}
i := 0
for _, c := range mb.mandanten[mid] {
if err := c.WriteMessage(websocket.TextMessage, bytes); err != nil {
slog.Info("conn to remove", "conns", mb.mandanten)
mb.RemoveConn(mid, i)
slog.Info("write", "error", err, "index", i)
} else {
i++
}
}
}
func (mb *messagebus) RemoveConn(mid int, i int) {
s := mb.mandanten[mid]
s[i] = s[len(s)-1]
mb.mandanten[mid] = s[:len(s)-1]
slog.Info("conn removed", "conns", mb.mandanten)
}
type MessageBusObject struct {
Entity []string `json:"entity"`
Id any `json:"id"`
}