File: events.go

package info (click to toggle)
golang-github-crc-org-crc 2.34.0%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,548 kB
  • sloc: sh: 398; makefile: 326; javascript: 40
file content (33 lines) | stat: -rw-r--r-- 651 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package events

import "github.com/r3labs/sse/v2"

const (
	LOGS   = "logs"   // Logs event channel, contains daemon logs
	STATUS = "status" // status event channel, contains VM load info
)

type EventPublisher interface {
	Publish(event *sse.Event)
}

type EventProducer interface {
	Start(publisher EventPublisher)
	Stop()
}

type eventPublisher struct {
	streamID  string
	sseServer *sse.Server
}

func newEventPublisher(streamID string, server *sse.Server) EventPublisher {
	return &eventPublisher{
		streamID:  streamID,
		sseServer: server,
	}
}

func (ep *eventPublisher) Publish(event *sse.Event) {
	ep.sseServer.Publish(ep.streamID, event)
}