musicman_protocols/
interface.rs

1use crate::*;
2use serde::{Deserialize, Serialize};
3use uuid::Uuid;
4
5#[derive(Serialize, Deserialize, PartialEq, Clone, Debug, Eq)]
6pub enum Request {
7    Play { track_id: Uuid }, // param uuid
8    Playlist(PlaylistRequest),
9    Meta { track_id: Uuid },
10    Search(SearchType),
11}
12
13#[derive(Serialize, Deserialize, PartialEq, Clone, Debug, Eq)]
14pub enum Response {
15    SongHeader {
16        track_id: Uuid,
17        channels: u16,
18        sample_rate: u32,
19    },
20    SongChunk {
21        track_id: Uuid,
22        data: Vec<i16>,
23        index: u32,
24    },
25    EndOfStream {
26        track_id: Uuid,
27    },
28
29    Playlist(PlaylistResponse),
30    SearchResults(Vec<SongMeta>),
31    Meta(SongMeta),
32    Error {
33        message: String,
34    },
35}