use crate::state::{Channel, Server}; use serde::{Deserialize, Serialize}; #[derive(Clone, Debug, Deserialize, Serialize)] pub enum Command { ChannelJoin { channel_identifier: String, }, ChannelList, ConfigReload, DeafenSelf(Option), InputVolumeSet(f32), MuteOther(String, Option), MuteSelf(Option), OutputVolumeSet(f32), Ping, ServerConnect { host: String, port: u16, username: String, password: Option, accept_invalid_cert: bool, }, ServerDisconnect, ServerStatus { host: String, port: u16, }, Status, UserVolumeSet(String, f32), PastMessages { block: bool, }, SendMessage { message: String, targets: Vec, }, } #[derive(Debug, Deserialize, Serialize)] pub enum CommandResponse { ChannelList { channels: Channel, }, DeafenStatus { is_deafened: bool, }, MuteStatus { is_muted: bool, }, Pong, ServerConnect { welcome_message: Option, }, ServerStatus { version: u32, users: u32, max_users: u32, bandwidth: u32, }, Status { server_state: Server, }, PastMessage { message: (String, String), }, } #[derive(Clone, Debug, Deserialize, Serialize)] pub enum MessageTarget { Channel { recursive: bool, name: String }, User { name: String }, }