package v1 import ( "fmt" "time" "github.com/wild-cloud/wild-central/internal/sse" ) // broadcastDnsmasqEvent broadcasts SSE events for dnsmasq status changes func (api *API) broadcastDnsmasqEvent(eventType string, message string) { if api.sseManager == nil { return } // Get current dnsmasq status status, err := api.dnsmasq.GetStatus() if err != nil { status = nil } event := &sse.Event{ ID: fmt.Sprintf("dnsmasq-%d", time.Now().UnixNano()), Type: eventType, InstanceName: "global", // dnsmasq is global/central-level, not instance-specific Timestamp: time.Now(), Data: map[string]any{ "message": message, "status": status, }, } api.sseManager.Broadcast(event) } // broadcastHaproxyEvent broadcasts SSE events for HAProxy status changes func (api *API) broadcastHaproxyEvent(eventType string, message string) { if api.sseManager == nil { return } event := &sse.Event{ ID: fmt.Sprintf("haproxy-%d", time.Now().UnixNano()), Type: eventType, InstanceName: "global", Timestamp: time.Now(), Data: map[string]any{ "message": message, }, } api.sseManager.Broadcast(event) } // broadcastCentralStatusEvent broadcasts SSE events for central status changes func (api *API) broadcastCentralStatusEvent(startTime time.Time) { if api.sseManager == nil { return } uptime := time.Since(startTime) event := &sse.Event{ ID: fmt.Sprintf("central-%d", time.Now().UnixNano()), Type: "central:status", InstanceName: "global", Timestamp: time.Now(), Data: map[string]any{ "status": "running", "version": api.version, "uptime": uptime.String(), "uptimeSeconds": int(uptime.Seconds()), }, } api.sseManager.Broadcast(event) }