aboutsummaryrefslogtreecommitdiff
path: root/server/src/protocol.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/protocol.rs')
-rw-r--r--server/src/protocol.rs43
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")]