Get desktop application:
View/edit binary Protocol Buffers messages
Player Commands Toggle Pause/Play, returns the new state
actually a u16, but protobuf does not support types lower than 32 bits
TODO: this is not necessary anymore, because of "UpdateTrackChanged"
Toggle the gapless mdoe, returns the new state.
Playlist Commands Skip to a specific track in the playlist at the momemnt, the one set via "current_track_index"
Play a specific track in the playlist
Cycle the playlist loop mode, returns the new mode.
Add one or multiple tracks to the playlist
Add multiple tracks to a Playlist
The index the track(s) are added at. If this is not at the end, all tracks at that index and after need to be shifted to make place for this new one.
All the Tracks to add at the index
Remove one or multiple tracks from the playlist
Remove multiple track or clear the playlist
Swap some tracks.
Get all tracks of the playlist.
Shuffle the playlist, returns the new playlist tracks.
Check for and remove deleted items from the playlist. Unlike shuffle, this will send Removal events
Misc Commands
all updates that can happen from the server side, without the client to have to ask explicitly naming convention for the stream update specific messages is to add the "Update" prefix, even if it already exists
using a custom Duration that matches rust's definition, as rust's may not fit into google's well-known Duration
Used in:
,Used as request type in: MusicPlayer.CycleLoop, MusicPlayer.GetPlaylist, MusicPlayer.GetProgress, MusicPlayer.ReloadConfig, MusicPlayer.RemoveDeletedTracks, MusicPlayer.SeekBackward, MusicPlayer.SeekForward, MusicPlayer.ShufflePlaylist, MusicPlayer.SkipNext, MusicPlayer.SkipPrevious, MusicPlayer.SpeedDown, MusicPlayer.SpeedUp, MusicPlayer.SubscribeServerUpdates, MusicPlayer.ToggleGapless, MusicPlayer.TogglePause, MusicPlayer.VolumeDown, MusicPlayer.VolumeUp
Used as response type in: MusicPlayer.AddToPlaylist, MusicPlayer.PlaySpecific, MusicPlayer.ReloadConfig, MusicPlayer.RemoveDeletedTracks, MusicPlayer.RemoveFromPlaylist, MusicPlayer.ShufflePlaylist, MusicPlayer.SkipNext, MusicPlayer.SkipPrevious, MusicPlayer.SwapTracks
(message has no fields)
A Gapless state.
Used as response type in: MusicPlayer.ToggleGapless
Used as field type in:
A play status.
Used as response type in: MusicPlayer.TogglePause
Used as field type in:
The actual status, mapped to [`playback::playlist::Status`]
Used as response type in: MusicPlayer.SeekBackward, MusicPlayer.SeekForward
Used as field type in:
,A Track got added to the playlist, this message contains where it was added and all the metadata required for display.
Used in:
,The index the track was added to the playlist. If this is not at the end, all tracks at that index and after need to be shifted to make place for this new one.
all values below should be moved into their own "Track" message at some point instead of having the TUI fetch everything from the file itself radio title, track title the following is (linux protobuf) 3.15, ubuntu 2204 still has (linux protobuf) 3.12 optional string title = 3; the following "oneof" is wire equivalent to the above "optional"
The Id of the track that was added
The Playlist got completely cleared
empty as there are no values, but not using "Empty" to have a unique message id
Used in:
(message has no fields)
The current Loop mode for the playlist
Used as response type in: MusicPlayer.CycleLoop
Used as field type in:
The actual mode, mapped to [`config::v2::server::LoopMode`]
A Track got removed from the playlist.
Used in:
The index of the track that was removed.
The Id of the track that was removed
/ Indicate that the playlist has been shuffled and should be re-fetched
Used in:
Some track needs to be swapped.
Used as request type in: MusicPlayer.SwapTracks
Used as field type in:
The first index to swap
The second index to swap
All tracks in the current playlist, they *should* be ordered from lowest to highest index.
Used as response type in: MusicPlayer.GetPlaylist
Used as field type in:
/ Clear the entire playlist
empty as there are no values, but not using "Empty" to have a unique message id
Used in:
(message has no fields)
Remove multiple tracks from a playlist
Used in:
The index the track(s) that are removed This is the starting index, and x amount of elements are removed after
All the Tracks to remove at the index
Used as response type in: MusicPlayer.SpeedDown, MusicPlayer.SpeedUp
Used as field type in:
A Identifier for a track.
Used in:
, , , ,Path on the system bytes *could* be used, but it way more complex and platform dependant
Url (ex. radio)
A podcast episode
The Gapless state changed, send new information.
Used in:
reuse the existing message
Indicate that some events could not be send Like a "Lagged" Error from tokio-stream
Used in:
TODO: is play-state (playing / paused / ??) the only things this should do?
Used in:
reuse the existing message
Used in:
The Speed changed, send new information
Used in:
reuse the existing message
The track changed in some way, send new information This includes everything from changing to a new track, new radio title, etc This is *not* used for regular track progress updates NOTE: this may or may not be sent for the initial track after startup as the client may connect after the track started
Used in:
The index into the playlist of which track changed.
Indicates if this update is a change to a new track (not just metadata change)
all values below should be moved into their own "Track" message at some point instead of having the TUI fetch everything from the file itself radio title, track title the following is (linux protobuf) 3.15, ubuntu 2204 still has (linux protobuf) 3.12 optional string title = 3; the following "oneof" is wire equivalent to the above "optional"
The Volume changed, send new information
Used in:
reuse the existing message
Used as response type in: MusicPlayer.VolumeDown, MusicPlayer.VolumeUp
Used as field type in:
actually a u16, but protobuf does not support types lower than 32 bits