Files
smalltalk/shared/src/lib.rs
T
2026-08-23 14:32:18 +02:00

56 lines
1.1 KiB
Rust

use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, PartialEq)]
pub enum ResponseStatus {
Ok,
Err,
}
#[derive(Serialize, Deserialize, Clone, Copy)]
pub struct AudioStreamInfo {
pub client_id: u32,
pub stream_id: u8,
pub channels: u16,
pub sample_rate: u32,
}
#[derive(Serialize, Deserialize)]
pub struct TcpRequest {
pub client_id: u32,
pub data: TcpRequestData,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum TcpRequestData {
NewConnection,
NewAudioStream { audio_stream_info: AudioStreamInfo },
DropAudioStream { audio_stream_id: u8 },
}
#[derive(Serialize, Deserialize)]
pub struct TcpResponse {
pub status: ResponseStatus,
pub data: TcpResponseData,
}
#[derive(Serialize, Deserialize)]
#[serde(tag = "type")]
pub enum TcpResponseData {
NewConnection {
client_id: u32,
},
UserConnected {
user_id: u32,
},
UserDisconnected {
user_id: u32,
},
NewAudioStreamAccepted {
audio_stream_id: u8,
},
AudioStreamsFullUpdate {
audio_stream_info: Vec<AudioStreamInfo>,
},
}