Replaces qbz path-dependencies with a standalone implementation using tokio-tungstenite and prost. Fixes queue-clear sentinel handling, pause position reporting, track-end queue advancement, and adds periodic position progress reports to keep the app progress bar in sync. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1010 lines
38 KiB
Rust
1010 lines
38 KiB
Rust
#[derive(Clone, Copy, PartialEq, Eq, Debug, ::prost::Enumeration)]
|
|
#[repr(i32)]
|
|
pub enum QConnectMessageType {
|
|
MessageTypeRndrSrvrJoinSession = 21,
|
|
MessageTypeRndrSrvrDeviceInfoUpdated = 22,
|
|
MessageTypeRndrSrvrStateUpdated = 23,
|
|
MessageTypeRndrSrvrRendererAction = 24,
|
|
MessageTypeRndrSrvrVolumeChanged = 25,
|
|
MessageTypeRndrSrvrFileAudioQualityChanged = 26,
|
|
MessageTypeRndrSrvrDeviceAudioQualityChanged = 27,
|
|
MessageTypeRndrSrvrMaxAudioQualityChanged = 28,
|
|
MessageTypeRndrSrvrVolumeMuted = 29,
|
|
MessageTypeSrvrRndrSetState = 41,
|
|
MessageTypeSrvrRndrSetVolume = 42,
|
|
MessageTypeSrvrRndrSetActive = 43,
|
|
MessageTypeSrvrRndrSetMaxAudioQuality = 44,
|
|
MessageTypeSrvrRndrSetLoopMode = 45,
|
|
MessageTypeSrvrRndrSetShuffleMode = 46,
|
|
MessageTypeSrvrRndrMuteVolume = 47,
|
|
MessageTypeCtrlSrvrJoinSession = 61,
|
|
MessageTypeCtrlSrvrSetPlayerState = 62,
|
|
MessageTypeCtrlSrvrSetActiveRenderer = 63,
|
|
MessageTypeCtrlSrvrSetVolume = 64,
|
|
MessageTypeCtrlSrvrClearQueue = 65,
|
|
MessageTypeCtrlSrvrQueueLoadTracks = 66,
|
|
MessageTypeCtrlSrvrQueueInsertTracks = 67,
|
|
MessageTypeCtrlSrvrQueueAddTracks = 68,
|
|
MessageTypeCtrlSrvrQueueRemoveTracks = 69,
|
|
MessageTypeCtrlSrvrQueueReorderTracks = 70,
|
|
MessageTypeCtrlSrvrSetShuffleMode = 71,
|
|
MessageTypeCtrlSrvrSetLoopMode = 72,
|
|
MessageTypeCtrlSrvrMuteVolume = 73,
|
|
MessageTypeCtrlSrvrSetMaxAudioQuality = 74,
|
|
MessageTypeCtrlSrvrSetQueueState = 75,
|
|
MessageTypeCtrlSrvrAskForQueueState = 76,
|
|
MessageTypeCtrlSrvrAskForRendererState = 77,
|
|
MessageTypeCtrlSrvrSetAutoplayMode = 78,
|
|
MessageTypeCtrlSrvrAutoplayLoadTracks = 79,
|
|
MessageTypeCtrlSrvrAutoplayRemoveTracks = 80,
|
|
MessageTypeSrvrCtrlSessionState = 81,
|
|
MessageTypeSrvrCtrlRendererStateUpdated = 82,
|
|
MessageTypeSrvrCtrlAddRenderer = 83,
|
|
MessageTypeSrvrCtrlUpdateRenderer = 84,
|
|
MessageTypeSrvrCtrlRemoveRenderer = 85,
|
|
MessageTypeSrvrCtrlActiveRendererChanged = 86,
|
|
MessageTypeSrvrCtrlVolumeChanged = 87,
|
|
MessageTypeSrvrCtrlQueueErrorMessage = 88,
|
|
MessageTypeSrvrCtrlQueueCleared = 89,
|
|
MessageTypeSrvrCtrlQueueState = 90,
|
|
MessageTypeSrvrCtrlQueueTracksLoaded = 91,
|
|
MessageTypeSrvrCtrlQueueTracksInserted = 92,
|
|
MessageTypeSrvrCtrlQueueTracksAdded = 93,
|
|
MessageTypeSrvrCtrlQueueTracksRemoved = 94,
|
|
MessageTypeSrvrCtrlQueueTracksReordered = 95,
|
|
MessageTypeSrvrCtrlShuffleModeSet = 96,
|
|
MessageTypeSrvrCtrlLoopModeSet = 97,
|
|
MessageTypeSrvrCtrlVolumeMuted = 98,
|
|
MessageTypeSrvrCtrlMaxAudioQualityChanged = 99,
|
|
MessageTypeSrvrCtrlFileAudioQualityChanged = 100,
|
|
MessageTypeSrvrCtrlDeviceAudioQualityChanged = 101,
|
|
MessageTypeSrvrCtrlAutoplayModeSet = 102,
|
|
MessageTypeSrvrCtrlAutoplayTracksLoaded = 103,
|
|
MessageTypeSrvrCtrlAutoplayTracksRemoved = 104,
|
|
MessageTypeSrvrCtrlQueueTracksAddedFromAutoplay = 105,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueVersionRef {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub major: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub minor: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct ErrorMessage {
|
|
/// Server sends error codes as strings (e.g. "ERROR_QUEUE_INSERT_TRACKS"),
|
|
/// not integers. Wire type = LengthDelimited (string).
|
|
#[prost(string, optional, tag = "1")]
|
|
pub code: Option<String>,
|
|
#[prost(string, optional, tag = "2")]
|
|
pub message: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTrack {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub queue_item_id: Option<i32>,
|
|
#[prost(fixed32, optional, tag = "2")]
|
|
pub track_id: Option<u32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTrackWithContext {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub queue_item_id: Option<i32>,
|
|
#[prost(fixed32, optional, tag = "2")]
|
|
pub track_id: Option<u32>,
|
|
#[prost(bytes = "vec", optional, tag = "3")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetQueueTrackWithContext {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub track_id: Option<i32>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct DeviceCapabilitiesMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub min_audio_quality: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub max_audio_quality: Option<i32>,
|
|
#[prost(int32, optional, tag = "3")]
|
|
pub volume_remote_control: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct DeviceInfoMessage {
|
|
#[prost(bytes = "vec", optional, tag = "1")]
|
|
pub device_uuid: Option<Vec<u8>>,
|
|
#[prost(string, optional, tag = "2")]
|
|
pub friendly_name: Option<String>,
|
|
#[prost(string, optional, tag = "3")]
|
|
pub brand: Option<String>,
|
|
#[prost(string, optional, tag = "4")]
|
|
pub model: Option<String>,
|
|
#[prost(string, optional, tag = "5")]
|
|
pub serial_number: Option<String>,
|
|
#[prost(int32, optional, tag = "6")]
|
|
pub device_type: Option<i32>,
|
|
#[prost(message, optional, tag = "7")]
|
|
pub capabilities: Option<DeviceCapabilitiesMessage>,
|
|
#[prost(string, optional, tag = "8")]
|
|
pub software_version: Option<String>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct JoinSessionMessage {
|
|
#[prost(bytes = "vec", optional, tag = "1")]
|
|
pub session_uuid: Option<Vec<u8>>,
|
|
#[prost(message, optional, tag = "2")]
|
|
pub device_info: Option<DeviceInfoMessage>,
|
|
/// Renderer-only: reason for joining (0=unknown, 1=controller_request, 2=reconnection)
|
|
#[prost(int32, optional, tag = "3")]
|
|
pub reason: Option<i32>,
|
|
/// Renderer-only: initial playback state sent on join
|
|
#[prost(message, optional, tag = "4")]
|
|
pub initial_state: Option<RendererStateMessage>,
|
|
/// Renderer-only: whether this renderer is active
|
|
#[prost(bool, optional, tag = "5")]
|
|
pub is_active: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetPlayerStateQueueItemMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub id: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetPlayerStateMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub playing_state: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub current_position: Option<i32>,
|
|
#[prost(message, optional, tag = "3")]
|
|
pub current_queue_item: Option<SetPlayerStateQueueItemMessage>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetActiveRendererMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetVolumeMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub volume: Option<i32>,
|
|
#[prost(int32, optional, tag = "3")]
|
|
pub volume_delta: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetLoopModeMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub loop_mode: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct MuteVolumeMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(bool, optional, tag = "2")]
|
|
pub value: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetMaxAudioQualityMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub max_audio_quality: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct AskForRendererStateMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct ClearQueueMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueLoadTracksMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(fixed32, repeated, tag = "3")]
|
|
pub track_ids: Vec<u32>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub queue_position: Option<i32>,
|
|
#[prost(fixed32, optional, tag = "5")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(int32, optional, tag = "6")]
|
|
pub shuffle_pivot_index: Option<i32>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub shuffle_mode: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "8")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "9")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "10")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueInsertTracksMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(fixed32, repeated, tag = "3")]
|
|
pub track_ids: Vec<u32>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub insert_after: Option<i32>,
|
|
#[prost(fixed32, optional, tag = "5")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(bytes = "vec", optional, tag = "6")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "8")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueAddTracksMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(fixed32, repeated, tag = "3")]
|
|
pub track_ids: Vec<u32>,
|
|
#[prost(fixed32, optional, tag = "4")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(bytes = "vec", optional, tag = "5")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueRemoveTracksMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(int32, repeated, packed = "false", tag = "3")]
|
|
pub queue_item_ids: Vec<i32>,
|
|
#[prost(bool, optional, tag = "4")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "5")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueReorderTracksMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(int32, repeated, packed = "false", tag = "3")]
|
|
pub queue_item_ids: Vec<i32>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub insert_after: Option<i32>,
|
|
#[prost(bool, optional, tag = "5")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetShuffleModeMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "3")]
|
|
pub shuffle_mode: Option<bool>,
|
|
#[prost(fixed32, optional, tag = "4")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(int32, optional, tag = "5")]
|
|
pub shuffle_pivot_queue_item_id: Option<i32>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetAutoplayModeMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "3")]
|
|
pub autoplay_mode: Option<bool>,
|
|
#[prost(bool, optional, tag = "4")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "5")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct AutoplayLoadTracksMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(fixed32, repeated, tag = "3")]
|
|
pub track_ids: Vec<u32>,
|
|
#[prost(bytes = "vec", optional, tag = "4")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct AutoplayRemoveTracksMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(int32, repeated, packed = "false", tag = "3")]
|
|
pub queue_item_ids: Vec<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct SetQueueStateMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(message, repeated, tag = "3")]
|
|
pub tracks: Vec<SetQueueTrackWithContext>,
|
|
#[prost(bool, optional, tag = "4")]
|
|
pub shuffle_mode: Option<bool>,
|
|
#[prost(int32, repeated, packed = "false", tag = "5")]
|
|
pub shuffled_track_indexes: Vec<i32>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_mode: Option<bool>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(message, repeated, tag = "8")]
|
|
pub autoplay_tracks: Vec<SetQueueTrackWithContext>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct AskForQueueStateMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version_ref: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueErrorMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(message, optional, tag = "3")]
|
|
pub error: Option<ErrorMessage>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueClearedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueStateMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(message, repeated, tag = "3")]
|
|
pub tracks: Vec<QueueTrackWithContext>,
|
|
#[prost(bool, optional, tag = "4")]
|
|
pub shuffle_mode: Option<bool>,
|
|
#[prost(int32, repeated, packed = "false", tag = "5")]
|
|
pub shuffled_track_indexes: Vec<i32>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_mode: Option<bool>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(message, repeated, tag = "8")]
|
|
pub autoplay_tracks: Vec<QueueTrackWithContext>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTracksLoadedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(message, repeated, tag = "3")]
|
|
pub tracks: Vec<QueueTrack>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub queue_position: Option<i32>,
|
|
#[prost(fixed32, optional, tag = "5")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(int32, optional, tag = "6")]
|
|
pub shuffle_pivot_queue_item_id: Option<i32>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub shuffle_mode: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "8")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "9")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "10")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTracksInsertedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(message, repeated, tag = "3")]
|
|
pub tracks: Vec<QueueTrack>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub insert_after: Option<i32>,
|
|
#[prost(fixed32, optional, tag = "5")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(bytes = "vec", optional, tag = "6")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "8")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTracksAddedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(message, repeated, tag = "3")]
|
|
pub tracks: Vec<QueueTrack>,
|
|
#[prost(fixed32, optional, tag = "4")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(bytes = "vec", optional, tag = "5")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTracksRemovedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(int32, repeated, packed = "false", tag = "3")]
|
|
pub queue_item_ids: Vec<i32>,
|
|
#[prost(bool, optional, tag = "4")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "5")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTracksReorderedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(int32, repeated, packed = "false", tag = "3")]
|
|
pub queue_item_ids: Vec<i32>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub insert_after: Option<i32>,
|
|
#[prost(bool, optional, tag = "5")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct ShuffleModeSetMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "3")]
|
|
pub shuffle_mode: Option<bool>,
|
|
#[prost(fixed32, optional, tag = "4")]
|
|
pub shuffle_seed: Option<u32>,
|
|
#[prost(int32, optional, tag = "5")]
|
|
pub shuffle_pivot_queue_item_id: Option<i32>,
|
|
#[prost(bool, optional, tag = "6")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "7")]
|
|
pub autoplay_loading: Option<bool>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct AutoplayModeSetMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(bool, optional, tag = "3")]
|
|
pub autoplay_mode: Option<bool>,
|
|
#[prost(bool, optional, tag = "4")]
|
|
pub autoplay_reset: Option<bool>,
|
|
#[prost(bool, optional, tag = "5")]
|
|
pub autoplay_loading: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct AutoplayTracksLoadedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(message, repeated, tag = "3")]
|
|
pub tracks: Vec<QueueTrack>,
|
|
#[prost(bytes = "vec", optional, tag = "4")]
|
|
pub context_uuid: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct AutoplayTracksRemovedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(bytes = "vec", optional, tag = "2")]
|
|
pub action_uuid: Option<Vec<u8>>,
|
|
#[prost(int32, repeated, packed = "false", tag = "3")]
|
|
pub queue_item_ids: Vec<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QueueTracksAddedFromAutoplayMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(int32, repeated, packed = "false", tag = "2")]
|
|
pub queue_item_ids: Vec<i32>,
|
|
#[prost(bytes = "vec", optional, tag = "100")]
|
|
pub queue_hash: Option<Vec<u8>>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererSetStateMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub playing_state: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub current_position: Option<i32>,
|
|
#[prost(message, optional, tag = "3")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(message, optional, tag = "4")]
|
|
pub current_track: Option<QueueTrackWithContext>,
|
|
#[prost(message, optional, tag = "5")]
|
|
pub next_track: Option<QueueTrackWithContext>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererSetVolumeMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub volume: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub volume_delta: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererSetActiveMessage {
|
|
#[prost(bool, optional, tag = "1")]
|
|
pub active: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererSetMaxAudioQualityMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub max_audio_quality: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererSetLoopModeMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub loop_mode: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererSetShuffleModeMessage {
|
|
#[prost(bool, optional, tag = "1")]
|
|
pub shuffle_mode: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererMuteVolumeMessage {
|
|
#[prost(bool, optional, tag = "1")]
|
|
pub value: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct PlaybackPositionMessage {
|
|
#[prost(fixed64, optional, tag = "1")]
|
|
pub timestamp: Option<u64>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub value: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererStateMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub playing_state: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub buffer_state: Option<i32>,
|
|
#[prost(message, optional, tag = "3")]
|
|
pub current_position: Option<PlaybackPositionMessage>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub duration: Option<i32>,
|
|
#[prost(message, optional, tag = "5")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(int32, optional, tag = "6")]
|
|
pub current_queue_item_id: Option<i32>,
|
|
#[prost(int32, optional, tag = "7")]
|
|
pub next_queue_item_id: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererActionMessage {
|
|
#[prost(uint32, optional, tag = "1")]
|
|
pub seek_position: Option<u32>,
|
|
/// ActionType: 0=unknown, 1=previous, 2=next, 3=repeat_off, 4=repeat_one,
|
|
/// 5=repeat_all, 6=shuffle_off, 7=shuffle_on, 8=seek
|
|
#[prost(int32, tag = "2")]
|
|
pub action: i32,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererStateUpdatedMessage {
|
|
#[prost(message, optional, tag = "1")]
|
|
pub state: Option<RendererStateMessage>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererVolumeChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub volume: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererVolumeMutedMessage {
|
|
#[prost(bool, optional, tag = "1")]
|
|
pub value: Option<bool>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererFileAudioQualityChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub sampling_rate: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub bit_depth: Option<i32>,
|
|
#[prost(int32, optional, tag = "3")]
|
|
pub nb_channels: Option<i32>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub audio_quality: Option<i32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct RendererMaxAudioQualityChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub max_audio_quality: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub network_type: Option<i32>,
|
|
}
|
|
|
|
// --- SRVR_CTRL session management messages (server → controller) ---
|
|
|
|
/// Type 81: Session state after joining
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlSessionStateMessage {
|
|
#[prost(bytes = "vec", optional, tag = "1")]
|
|
pub session_uuid: Option<Vec<u8>>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub active_renderer_id: Option<i32>,
|
|
#[prost(message, optional, tag = "3")]
|
|
pub queue_version: Option<QueueVersionRef>,
|
|
#[prost(int32, optional, tag = "4")]
|
|
pub playing_state: Option<i32>,
|
|
#[prost(int32, optional, tag = "5")]
|
|
pub loop_mode: Option<i32>,
|
|
}
|
|
|
|
/// Nested player state for CtrlRendererStateUpdatedMessage
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlRendererPlayerState {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub playing_state: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub buffer_state: Option<i32>,
|
|
#[prost(message, optional, tag = "3")]
|
|
pub current_position: Option<PlaybackPositionMessage>,
|
|
#[prost(uint32, optional, tag = "4")]
|
|
pub duration: Option<u32>,
|
|
#[prost(int32, optional, tag = "5")]
|
|
pub current_queue_item_id: Option<i32>,
|
|
}
|
|
|
|
/// Type 82: Renderer state updated (controller view)
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlRendererStateUpdatedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub status: Option<i32>,
|
|
#[prost(message, optional, tag = "3")]
|
|
pub player_state: Option<CtrlRendererPlayerState>,
|
|
}
|
|
|
|
/// Type 83: New renderer added to session
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlAddRendererMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(message, optional, tag = "2")]
|
|
pub device_info: Option<DeviceInfoMessage>,
|
|
}
|
|
|
|
/// Type 84: Renderer info updated
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlUpdateRendererMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(message, optional, tag = "2")]
|
|
pub device_info: Option<DeviceInfoMessage>,
|
|
}
|
|
|
|
/// Type 85: Renderer removed from session
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlRemoveRendererMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
}
|
|
|
|
/// Type 86: Active renderer changed
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlActiveRendererChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub active_renderer_id: Option<i32>,
|
|
}
|
|
|
|
/// Type 87: Volume changed on a renderer (controller view)
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlVolumeChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(uint32, optional, tag = "2")]
|
|
pub volume: Option<u32>,
|
|
}
|
|
|
|
/// Type 97: Loop mode set
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlLoopModeSetMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub loop_mode: Option<i32>,
|
|
}
|
|
|
|
/// Type 98: Volume muted (controller view)
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlVolumeMutedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(bool, optional, tag = "2")]
|
|
pub value: Option<bool>,
|
|
}
|
|
|
|
/// Type 99: Max audio quality changed (controller view)
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlMaxAudioQualityChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub max_audio_quality: Option<i32>,
|
|
#[prost(int32, optional, tag = "3")]
|
|
pub network_type: Option<i32>,
|
|
}
|
|
|
|
/// Type 100: File audio quality changed (controller view)
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlFileAudioQualityChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(uint32, optional, tag = "2")]
|
|
pub sampling_rate: Option<u32>,
|
|
#[prost(uint32, optional, tag = "3")]
|
|
pub bit_depth: Option<u32>,
|
|
#[prost(uint32, optional, tag = "4")]
|
|
pub nb_channels: Option<u32>,
|
|
#[prost(int32, optional, tag = "5")]
|
|
pub audio_quality: Option<i32>,
|
|
}
|
|
|
|
/// Type 101: Device audio quality changed (controller view)
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct CtrlDeviceAudioQualityChangedMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub renderer_id: Option<i32>,
|
|
#[prost(uint32, optional, tag = "2")]
|
|
pub sampling_rate: Option<u32>,
|
|
#[prost(uint32, optional, tag = "3")]
|
|
pub bit_depth: Option<u32>,
|
|
#[prost(uint32, optional, tag = "4")]
|
|
pub nb_channels: Option<u32>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QConnectMessages {
|
|
#[prost(fixed64, optional, tag = "1")]
|
|
pub messages_time: Option<u64>,
|
|
#[prost(int32, optional, tag = "2")]
|
|
pub messages_id: Option<i32>,
|
|
#[prost(message, repeated, tag = "3")]
|
|
pub messages: Vec<QConnectMessage>,
|
|
}
|
|
|
|
#[derive(Clone, PartialEq, ::prost::Message)]
|
|
pub struct QConnectMessage {
|
|
#[prost(int32, optional, tag = "1")]
|
|
pub message_type: Option<i32>,
|
|
#[prost(message, optional, tag = "21")]
|
|
pub rndr_srvr_join_session: Option<JoinSessionMessage>,
|
|
#[prost(message, optional, tag = "22")]
|
|
pub rndr_srvr_device_info_updated: Option<DeviceInfoMessage>,
|
|
#[prost(message, optional, tag = "23")]
|
|
pub rndr_srvr_state_updated: Option<RendererStateUpdatedMessage>,
|
|
#[prost(message, optional, tag = "24")]
|
|
pub rndr_srvr_renderer_action: Option<RendererActionMessage>,
|
|
#[prost(message, optional, tag = "25")]
|
|
pub rndr_srvr_volume_changed: Option<RendererVolumeChangedMessage>,
|
|
#[prost(message, optional, tag = "26")]
|
|
pub rndr_srvr_file_audio_quality_changed: Option<RendererFileAudioQualityChangedMessage>,
|
|
#[prost(message, optional, tag = "28")]
|
|
pub rndr_srvr_max_audio_quality_changed: Option<RendererMaxAudioQualityChangedMessage>,
|
|
#[prost(message, optional, tag = "29")]
|
|
pub rndr_srvr_volume_muted: Option<RendererVolumeMutedMessage>,
|
|
#[prost(message, optional, tag = "41")]
|
|
pub srvr_rndr_set_state: Option<RendererSetStateMessage>,
|
|
#[prost(message, optional, tag = "42")]
|
|
pub srvr_rndr_set_volume: Option<RendererSetVolumeMessage>,
|
|
#[prost(message, optional, tag = "43")]
|
|
pub srvr_rndr_set_active: Option<RendererSetActiveMessage>,
|
|
#[prost(message, optional, tag = "44")]
|
|
pub srvr_rndr_set_max_audio_quality: Option<RendererSetMaxAudioQualityMessage>,
|
|
#[prost(message, optional, tag = "45")]
|
|
pub srvr_rndr_set_loop_mode: Option<RendererSetLoopModeMessage>,
|
|
#[prost(message, optional, tag = "46")]
|
|
pub srvr_rndr_set_shuffle_mode: Option<RendererSetShuffleModeMessage>,
|
|
#[prost(message, optional, tag = "47")]
|
|
pub srvr_rndr_mute_volume: Option<RendererMuteVolumeMessage>,
|
|
#[prost(message, optional, tag = "61")]
|
|
pub ctrl_srvr_join_session: Option<JoinSessionMessage>,
|
|
#[prost(message, optional, tag = "62")]
|
|
pub ctrl_srvr_set_player_state: Option<SetPlayerStateMessage>,
|
|
#[prost(message, optional, tag = "63")]
|
|
pub ctrl_srvr_set_active_renderer: Option<SetActiveRendererMessage>,
|
|
#[prost(message, optional, tag = "64")]
|
|
pub ctrl_srvr_set_volume: Option<SetVolumeMessage>,
|
|
#[prost(message, optional, tag = "65")]
|
|
pub ctrl_srvr_clear_queue: Option<ClearQueueMessage>,
|
|
#[prost(message, optional, tag = "66")]
|
|
pub ctrl_srvr_queue_load_tracks: Option<QueueLoadTracksMessage>,
|
|
#[prost(message, optional, tag = "67")]
|
|
pub ctrl_srvr_queue_insert_tracks: Option<QueueInsertTracksMessage>,
|
|
#[prost(message, optional, tag = "68")]
|
|
pub ctrl_srvr_queue_add_tracks: Option<QueueAddTracksMessage>,
|
|
#[prost(message, optional, tag = "69")]
|
|
pub ctrl_srvr_queue_remove_tracks: Option<QueueRemoveTracksMessage>,
|
|
#[prost(message, optional, tag = "70")]
|
|
pub ctrl_srvr_queue_reorder_tracks: Option<QueueReorderTracksMessage>,
|
|
#[prost(message, optional, tag = "71")]
|
|
pub ctrl_srvr_set_shuffle_mode: Option<SetShuffleModeMessage>,
|
|
#[prost(message, optional, tag = "72")]
|
|
pub ctrl_srvr_set_loop_mode: Option<SetLoopModeMessage>,
|
|
#[prost(message, optional, tag = "73")]
|
|
pub ctrl_srvr_mute_volume: Option<MuteVolumeMessage>,
|
|
#[prost(message, optional, tag = "74")]
|
|
pub ctrl_srvr_set_max_audio_quality: Option<SetMaxAudioQualityMessage>,
|
|
#[prost(message, optional, tag = "75")]
|
|
pub ctrl_srvr_set_queue_state: Option<SetQueueStateMessage>,
|
|
#[prost(message, optional, tag = "76")]
|
|
pub ctrl_srvr_ask_for_queue_state: Option<AskForQueueStateMessage>,
|
|
#[prost(message, optional, tag = "77")]
|
|
pub ctrl_srvr_ask_for_renderer_state: Option<AskForRendererStateMessage>,
|
|
#[prost(message, optional, tag = "78")]
|
|
pub ctrl_srvr_set_autoplay_mode: Option<SetAutoplayModeMessage>,
|
|
#[prost(message, optional, tag = "79")]
|
|
pub ctrl_srvr_autoplay_load_tracks: Option<AutoplayLoadTracksMessage>,
|
|
#[prost(message, optional, tag = "80")]
|
|
pub ctrl_srvr_autoplay_remove_tracks: Option<AutoplayRemoveTracksMessage>,
|
|
#[prost(message, optional, tag = "81")]
|
|
pub srvr_ctrl_session_state: Option<CtrlSessionStateMessage>,
|
|
#[prost(message, optional, tag = "82")]
|
|
pub srvr_ctrl_renderer_state_updated: Option<CtrlRendererStateUpdatedMessage>,
|
|
#[prost(message, optional, tag = "83")]
|
|
pub srvr_ctrl_add_renderer: Option<CtrlAddRendererMessage>,
|
|
#[prost(message, optional, tag = "84")]
|
|
pub srvr_ctrl_update_renderer: Option<CtrlUpdateRendererMessage>,
|
|
#[prost(message, optional, tag = "85")]
|
|
pub srvr_ctrl_remove_renderer: Option<CtrlRemoveRendererMessage>,
|
|
#[prost(message, optional, tag = "86")]
|
|
pub srvr_ctrl_active_renderer_changed: Option<CtrlActiveRendererChangedMessage>,
|
|
#[prost(message, optional, tag = "87")]
|
|
pub srvr_ctrl_volume_changed: Option<CtrlVolumeChangedMessage>,
|
|
#[prost(message, optional, tag = "88")]
|
|
pub srvr_ctrl_queue_error_message: Option<QueueErrorMessage>,
|
|
#[prost(message, optional, tag = "89")]
|
|
pub srvr_ctrl_queue_cleared: Option<QueueClearedMessage>,
|
|
#[prost(message, optional, tag = "90")]
|
|
pub srvr_ctrl_queue_state: Option<QueueStateMessage>,
|
|
#[prost(message, optional, tag = "91")]
|
|
pub srvr_ctrl_queue_tracks_loaded: Option<QueueTracksLoadedMessage>,
|
|
#[prost(message, optional, tag = "92")]
|
|
pub srvr_ctrl_queue_tracks_inserted: Option<QueueTracksInsertedMessage>,
|
|
#[prost(message, optional, tag = "93")]
|
|
pub srvr_ctrl_queue_tracks_added: Option<QueueTracksAddedMessage>,
|
|
#[prost(message, optional, tag = "94")]
|
|
pub srvr_ctrl_queue_tracks_removed: Option<QueueTracksRemovedMessage>,
|
|
#[prost(message, optional, tag = "95")]
|
|
pub srvr_ctrl_queue_tracks_reordered: Option<QueueTracksReorderedMessage>,
|
|
#[prost(message, optional, tag = "96")]
|
|
pub srvr_ctrl_shuffle_mode_set: Option<ShuffleModeSetMessage>,
|
|
#[prost(message, optional, tag = "97")]
|
|
pub srvr_ctrl_loop_mode_set: Option<CtrlLoopModeSetMessage>,
|
|
#[prost(message, optional, tag = "98")]
|
|
pub srvr_ctrl_volume_muted: Option<CtrlVolumeMutedMessage>,
|
|
#[prost(message, optional, tag = "99")]
|
|
pub srvr_ctrl_max_audio_quality_changed: Option<CtrlMaxAudioQualityChangedMessage>,
|
|
#[prost(message, optional, tag = "100")]
|
|
pub srvr_ctrl_file_audio_quality_changed: Option<CtrlFileAudioQualityChangedMessage>,
|
|
#[prost(message, optional, tag = "101")]
|
|
pub srvr_ctrl_device_audio_quality_changed: Option<CtrlDeviceAudioQualityChangedMessage>,
|
|
#[prost(message, optional, tag = "102")]
|
|
pub srvr_ctrl_autoplay_mode_set: Option<AutoplayModeSetMessage>,
|
|
#[prost(message, optional, tag = "103")]
|
|
pub srvr_ctrl_autoplay_tracks_loaded: Option<AutoplayTracksLoadedMessage>,
|
|
#[prost(message, optional, tag = "104")]
|
|
pub srvr_ctrl_autoplay_tracks_removed: Option<AutoplayTracksRemovedMessage>,
|
|
#[prost(message, optional, tag = "105")]
|
|
pub srvr_ctrl_queue_tracks_added_from_autoplay: Option<QueueTracksAddedFromAutoplayMessage>,
|
|
}
|