use serde::{Deserialize, Serialize};
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
pub enum CallState {
Idle,
CreatingOffer,
WaitingAnswer,
IncomingOffer,
Connected,
Ending,
Ended,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum SignalingMessage {
Offer {
sdp: String,
},
Answer {
sdp: String,
},
IceCandidate {
candidate: String,
#[serde(skip_serializing_if = "Option::is_none")]
sdp_mid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
sdp_mline_index: Option<u16>,
},
Hangup {
#[serde(skip_serializing_if = "Option::is_none")]
reason: Option<String>,
},
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum RtcEvent {
LocalIceCandidate(SignalingMessage),
StateChanged(CallState),
ConnectionEstablished,
ConnectionClosed,
}