aboutsummaryrefslogtreecommitdiff
path: root/client-native-lib/src/protocol.rs
diff options
context:
space:
mode:
Diffstat (limited to 'client-native-lib/src/protocol.rs')
-rw-r--r--client-native-lib/src/protocol.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/client-native-lib/src/protocol.rs b/client-native-lib/src/protocol.rs
new file mode 100644
index 0000000..431dc42
--- /dev/null
+++ b/client-native-lib/src/protocol.rs
@@ -0,0 +1,43 @@
+use serde::{Deserialize, Serialize};
+use webrtc::{
+ ice_transport::ice_candidate::RTCIceCandidateInit, peer_connection::sdp::sdp_type::RTCSdpType,
+};
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "snake_case")]
+pub enum ClientboundPacket {
+ Init { your_id: usize, version: String },
+ ClientJoin { id: usize },
+ ClientLeave { id: usize },
+ Message { sender: usize, message: String },
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+#[serde(rename_all = "snake_case")]
+pub enum ServerboundPacket {
+ Ping,
+ Relay {
+ recipient: Option<usize>,
+ message: String,
+ },
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct RelayMessageWrapper {
+ pub sender: usize, // redundant, but ensures the server didnt cheat
+ pub inner: RelayMessage,
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub enum RelayMessage {
+ Offer(RTCSessionDescriptionInit),
+ Answer(RTCSessionDescriptionInit),
+ IceCandidate(RTCIceCandidateInit),
+}
+
+#[derive(Debug, Clone, Serialize, Deserialize)]
+pub struct RTCSessionDescriptionInit {
+ #[serde(rename = "type")]
+ pub ty: RTCSdpType,
+ pub sdp: String,
+}