architecture cleanup
This commit is contained in:
+24
-10
@@ -11,8 +11,20 @@ at any time. Synchronization is a runtime relationship between the slots, not a
|
||||
startup mode.
|
||||
|
||||
The design must leave a clean extension point for an `mxlfabrics` reader after
|
||||
the local MXL player is stable. It must also support a later playlist layer
|
||||
without moving playlist timing or selection into media readers.
|
||||
the local MXL player is stable. Playlist timing and selection must remain above
|
||||
media readers and playback workers.
|
||||
|
||||
## Current status
|
||||
|
||||
- Stages 0 through 11 are complete.
|
||||
- The reader-factory extension point from Stage 12 is complete; the
|
||||
`mxlfabrics` implementation remains future work.
|
||||
- Stage 13 is complete, including manual/timed navigation, looping,
|
||||
pause/resume, failure policies, playlist-level retry configuration, and GUI
|
||||
diagnostics.
|
||||
- Playlist lifecycle messages are explicit `PlaylistEvent` values produced by
|
||||
`PlaylistEventCoordinator`; runtime cancellation owns shutdown, so shared
|
||||
event channels are not closed by either endpoint.
|
||||
|
||||
## Required behaviour
|
||||
|
||||
@@ -61,7 +73,7 @@ without moving playlist timing or selection into media readers.
|
||||
- Stopping both members of a synchronized group closes the group atomically.
|
||||
- Stop commands cancel active reads and retry backoff promptly.
|
||||
|
||||
### Future playlist behaviour
|
||||
### Playlist behaviour
|
||||
|
||||
A playlist is an ordered list of playback entries. Each entry describes a
|
||||
complete desired session state and may contain:
|
||||
@@ -244,22 +256,24 @@ transition.
|
||||
4. Start independent workers for both configured slots.
|
||||
5. Let either worker begin playing without waiting for the other.
|
||||
|
||||
## Future playlist model
|
||||
## Playlist model
|
||||
|
||||
The exact public types can be chosen later, but the intended model is:
|
||||
The implemented model is conceptually:
|
||||
|
||||
```go
|
||||
type PlaylistEntry struct {
|
||||
Name string
|
||||
VideoUUID string
|
||||
AudioUUID string
|
||||
Video PlaylistFeed // domain + UUID, optional
|
||||
Audio PlaylistFeed // domain + UUID, optional
|
||||
SyncRequested bool
|
||||
Duration time.Duration
|
||||
}
|
||||
|
||||
type Playlist struct {
|
||||
Entries []PlaylistEntry
|
||||
Loop bool
|
||||
Entries []PlaylistEntry
|
||||
Loop bool
|
||||
OnFailure PlaylistFailurePolicy // wait or next
|
||||
Retry *RetryPolicy // optional playlist-wide override
|
||||
}
|
||||
```
|
||||
|
||||
@@ -505,7 +519,7 @@ Acceptance criteria:
|
||||
- Fake readers can drive all controller and supervisor tests.
|
||||
- Local MXL remains the reference implementation.
|
||||
|
||||
### Stage 13 — Simple playlist
|
||||
### Stage 13 — Simple playlist (complete)
|
||||
|
||||
Work:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user