explicit info in GUI for playlist
This commit is contained in:
@@ -112,13 +112,14 @@ func (c *PlaylistReadinessCoordinator) Run(ctx context.Context) error {
|
||||
continue
|
||||
}
|
||||
statuses := c.statuses.SnapshotAll()
|
||||
if IsSessionFailed(sessionSnapshot, statuses) {
|
||||
if failure, failed := SessionFailureStatus(sessionSnapshot, statuses); failed {
|
||||
if playlistSnapshot.Revision == emittedFailedRevision {
|
||||
continue
|
||||
}
|
||||
failed := PlaylistEvent{
|
||||
Revision: playlistSnapshot.Revision,
|
||||
Kind: PlaylistEventFailed,
|
||||
Failure: failure,
|
||||
}
|
||||
select {
|
||||
case <-ctx.Done():
|
||||
@@ -217,24 +218,39 @@ func IsSessionFailed(
|
||||
session SessionSnapshot,
|
||||
statuses PlaybackStatusSnapshot,
|
||||
) bool {
|
||||
_, failed := SessionFailureStatus(session, statuses)
|
||||
return failed
|
||||
}
|
||||
|
||||
func SessionFailureStatus(
|
||||
session SessionSnapshot,
|
||||
statuses PlaybackStatusSnapshot,
|
||||
) (Status, bool) {
|
||||
if statuses.Generation != session.Generation {
|
||||
return false
|
||||
return Status{}, false
|
||||
}
|
||||
|
||||
switch session.Plan.Topology {
|
||||
case TopologyIndependent:
|
||||
return (session.Plan.Video.Active && statusIsFailed(
|
||||
if session.Plan.Video.Active && statusIsFailed(
|
||||
statuses.Video, statuses.HasVideo, session.Generation, session.Plan.Video,
|
||||
)) || (session.Plan.Audio.Active && statusIsFailed(
|
||||
) {
|
||||
return statuses.Video, true
|
||||
}
|
||||
if session.Plan.Audio.Active && statusIsFailed(
|
||||
statuses.Audio, statuses.HasAudio, session.Generation, session.Plan.Audio,
|
||||
))
|
||||
) {
|
||||
return statuses.Audio, true
|
||||
}
|
||||
return Status{}, false
|
||||
case TopologySynchronized:
|
||||
return statuses.HasSync &&
|
||||
failed := statuses.HasSync &&
|
||||
statuses.Sync.Generation == session.Generation &&
|
||||
statuses.Sync.State == StateFailed &&
|
||||
sameSyncSource(statuses.Sync.Pair, session.Plan.Sync)
|
||||
return statuses.Sync, failed
|
||||
default:
|
||||
return false
|
||||
return Status{}, false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user