octoplex/domain/types.go
2025-02-15 07:27:07 +01:00

53 lines
1.1 KiB
Go

package domain
import "time"
// AppState holds application state.
type AppState struct {
Source Source
Destinations []Destination
}
// Source represents the source, currently always the mediaserver.
type Source struct {
Container Container
Live bool
Listeners int
RTMPURL string
RTMPInternalURL string
ExitReason string
}
type DestinationStatus int
const (
DestinationStatusOffAir DestinationStatus = iota
DestinationStatusStarting
DestinationStatusLive
)
// Destination is a single destination.
type Destination struct {
Container Container
Status DestinationStatus
Name string
URL string
}
// Container represents the current state of an individual container.
//
// The source of truth is always the Docker daemon, this struct is used only
// for passing asynchronous state.
type Container struct {
ID string
State string
HealthState string
CPUPercent float64
MemoryUsageBytes uint64
RxRate int
TxRate int
RxSince time.Time
RestartCount int
ExitCode *int
}