enigma_rtc/
types.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Copy, Clone, PartialEq, Eq)]
4pub enum CallState {
5    Idle,
6    CreatingOffer,
7    WaitingAnswer,
8    IncomingOffer,
9    Connected,
10    Ending,
11    Ended,
12}
13
14#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
15#[serde(tag = "type", rename_all = "snake_case")]
16pub enum SignalingMessage {
17    Offer {
18        sdp: String,
19    },
20    Answer {
21        sdp: String,
22    },
23    IceCandidate {
24        candidate: String,
25        #[serde(skip_serializing_if = "Option::is_none")]
26        sdp_mid: Option<String>,
27        #[serde(skip_serializing_if = "Option::is_none")]
28        sdp_mline_index: Option<u16>,
29    },
30    Hangup {
31        #[serde(skip_serializing_if = "Option::is_none")]
32        reason: Option<String>,
33    },
34}
35
36#[derive(Debug, Clone, PartialEq, Eq)]
37pub enum RtcEvent {
38    LocalIceCandidate(SignalingMessage),
39    StateChanged(CallState),
40    ConnectionEstablished,
41    ConnectionClosed,
42}