diff options
Diffstat (limited to 'server/src/protocol.rs')
-rw-r--r-- | server/src/protocol.rs | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/server/src/protocol.rs b/server/src/protocol.rs index d7e94d0..780ae4a 100644 --- a/server/src/protocol.rs +++ b/server/src/protocol.rs @@ -1,16 +1,43 @@ use serde::{Deserialize, Serialize}; -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] -pub enum ClientboundPacket {} +pub enum ClientboundPacket { + Init { + your_id: usize, + version: String, + }, + ClientJoin { + id: usize, + name: String, + }, + ClientLeave { + id: usize, + }, + Message { + sender: usize, + message: RelayMessage, + }, +} -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum ServerboundPacket { - Answer { receiver: usize }, + Relay { + recipient: Option<usize>, + message: RelayMessage, + }, +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "snake_case")] +pub enum RelayMessage { + Offer(RTCSessionDescriptionInit), + Answer(RTCSessionDescriptionInit), + IceCandidate(RTCIceCandidateInit), } -#[derive(Debug, Serialize, Deserialize)] +#[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "snake_case")] pub enum RTCSdpType { Answer, @@ -18,13 +45,15 @@ pub enum RTCSdpType { PRAnswer, Rollback, } -#[derive(Debug, Serialize, Deserialize)] + +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct RTCSessionDescriptionInit { sdp: String, #[serde(rename = "type")] ty: RTCSdpType, } -#[derive(Debug, Serialize, Deserialize)] + +#[derive(Debug, Clone, Serialize, Deserialize)] pub struct RTCIceCandidateInit { candidate: Option<String>, #[serde(rename = "sdpMLineIndex")] |