Files
2026-09-02 00:23:03 +03:00

60 lines
1.3 KiB
Go

package main
import (
"mxl-player/internal/playback"
"strings"
"time"
)
const (
defaultInitialRetryDelay = 500 * time.Millisecond
defaultMaxRetryDelay = 10 * time.Second
)
func resolveDomain(shared, override string) string {
if override != "" {
return override
}
return shared
}
func normalizeFeedInput(domain, uuid string) (string, string) {
return strings.TrimSpace(domain), strings.TrimSpace(uuid)
}
func resolveRetryPolicy(
cli playback.RetryPolicy,
cliMaxAttemptsSet bool,
playlist playback.Playlist,
) playback.RetryPolicy {
if playlist.Retry == nil {
return cli
}
resolved := *playlist.Retry
if cliMaxAttemptsSet {
resolved.MaxAttempts = cli.MaxAttempts
}
return resolved
}
func (a appArgs) playbackConfig() playback.SessionConfig {
return playback.SessionConfig{
Video: playback.FeedConfig{
Domain: resolveDomain(a.Domain, a.VideoDomain),
UUID: a.VideoFlowId,
Active: a.VideoFlowId != "",
},
Audio: playback.FeedConfig{
Domain: resolveDomain(a.Domain, a.AudioDomain),
UUID: a.AudioFlowId,
Active: a.AudioFlowId != "",
},
SyncRequested: a.SyncRequested,
Retry: playback.RetryPolicy{
MaxAttempts: a.MaxAttempts,
InitialDelay: defaultInitialRetryDelay,
MaxDelay: defaultMaxRetryDelay,
},
}
}