]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server.go
Add initial HTTP API endpoints
[rbdr/mobius] / hotline / server.go
index 58a9209f1574d90387cc4389f21ea569be14e9c9..cfdb6b3a4ce52709c8ca28b1c5bf77e0b32c7f66 100644 (file)
@@ -13,6 +13,7 @@ import (
        "log"
        "log/slog"
        "net"
+       "os"
        "strings"
        "sync"
        "time"
@@ -586,3 +587,18 @@ func (s *Server) handleFileTransfer(ctx context.Context, rwc io.ReadWriter) erro
        }
        return nil
 }
+
+func (s *Server) SendAll(t TranType, fields ...Field) {
+       for _, c := range s.ClientMgr.List() {
+               s.outbox <- NewTransaction(t, c.ID, fields...)
+       }
+}
+
+func (s *Server) Shutdown(msg []byte) {
+       s.Logger.Info("Shutdown signal received")
+       s.SendAll(TranDisconnectMsg, NewField(FieldData, msg))
+
+       time.Sleep(3 * time.Second)
+
+       os.Exit(0)
+}