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}