source-aware playback statuses.
This commit is contained in:
@@ -59,8 +59,13 @@ func NewSyncWorker(
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (w *SyncWorker) emit(ctx context.Context, status Status) {
|
||||
func (w *SyncWorker) emit(
|
||||
ctx context.Context,
|
||||
pair SyncPairConfig,
|
||||
status Status,
|
||||
) {
|
||||
status.Generation = generationFromContext(ctx)
|
||||
status.Pair = pair
|
||||
if w.observer != nil {
|
||||
w.observer(status)
|
||||
}
|
||||
@@ -80,6 +85,7 @@ func (w *SyncWorker) Run(
|
||||
if !videoConfig.Active || !audioConfig.Active {
|
||||
return ErrSyncFeedsInactive
|
||||
}
|
||||
pair := SyncPairConfig{Video: videoConfig, Audio: audioConfig}
|
||||
|
||||
attemptNumber := 0
|
||||
var latestRetry retryEvent
|
||||
@@ -91,7 +97,7 @@ func (w *SyncWorker) Run(
|
||||
if attemptNumber > 1 {
|
||||
state = StateReconnecting
|
||||
}
|
||||
w.emit(ctx, Status{
|
||||
w.emit(ctx, pair, Status{
|
||||
Unit: UnitSync,
|
||||
State: state,
|
||||
Attempt: attemptNumber,
|
||||
@@ -100,7 +106,7 @@ func (w *SyncWorker) Run(
|
||||
attemptAudioSink := &stabilityAudioSink{
|
||||
sink: w.audioSink,
|
||||
onStable: func() {
|
||||
w.emit(ctx, Status{
|
||||
w.emit(ctx, pair, Status{
|
||||
Unit: UnitSync,
|
||||
State: StatePlaying,
|
||||
Attempt: attemptNumber,
|
||||
@@ -134,7 +140,7 @@ func (w *SyncWorker) Run(
|
||||
if !event.WillRetry {
|
||||
return
|
||||
}
|
||||
w.emit(ctx, Status{
|
||||
w.emit(ctx, pair, Status{
|
||||
Unit: UnitSync,
|
||||
State: StateReconnecting,
|
||||
Attempt: attemptNumber + 1,
|
||||
@@ -152,18 +158,18 @@ func (w *SyncWorker) Run(
|
||||
observeRetry,
|
||||
)
|
||||
if ctx.Err() != nil {
|
||||
w.emit(ctx, Status{
|
||||
w.emit(ctx, pair, Status{
|
||||
Unit: UnitSync,
|
||||
State: StateStopping,
|
||||
})
|
||||
w.emit(ctx, Status{
|
||||
w.emit(ctx, pair, Status{
|
||||
Unit: UnitSync,
|
||||
State: StateIdle,
|
||||
})
|
||||
return ctx.Err()
|
||||
}
|
||||
if err != nil {
|
||||
w.emit(ctx, Status{
|
||||
w.emit(ctx, pair, Status{
|
||||
Unit: UnitSync,
|
||||
State: StateFailed,
|
||||
Attempt: attemptNumber,
|
||||
@@ -172,7 +178,7 @@ func (w *SyncWorker) Run(
|
||||
})
|
||||
return err
|
||||
}
|
||||
w.emit(ctx, Status{
|
||||
w.emit(ctx, pair, Status{
|
||||
Unit: UnitSync,
|
||||
State: StateIdle,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user