use derive_more::{Display, From};
use crate::{
platform::{self, RtcStatsError},
utils::Caused,
};
#[derive(Debug)]
pub enum SdpType {
Offer(String),
Answer(String),
}
#[derive(Debug)]
pub struct IceCandidate {
pub candidate: String,
pub sdp_m_line_index: Option<u16>,
pub sdp_mid: Option<String>,
}
#[derive(Debug)]
pub struct IceCandidateError {
pub address: Option<String>,
pub port: Option<u32>,
pub url: String,
pub error_code: i32,
pub error_text: String,
}
#[derive(Caused, Clone, Debug, Display, From)]
#[cause(error = platform::Error)]
pub enum RtcPeerConnectionError {
#[display(fmt = "Failed to add ICE candidate: {}", _0)]
#[from(ignore)]
AddIceCandidateFailed(platform::Error),
#[display(fmt = "Failed to create SDP answer: {}", _0)]
#[from(ignore)]
CreateAnswerFailed(platform::Error),
#[display(fmt = "Failed to create PeerConnection: {}", _0)]
#[from(ignore)]
PeerCreationError(platform::Error),
#[display(fmt = "Failed to create SDP offer: {}", _0)]
#[from(ignore)]
CreateOfferFailed(platform::Error),
#[display(fmt = "Failed to get RTCStats: {}", _0)]
RtcStatsError(#[cause] RtcStatsError),
#[display(fmt = "PeerConnection.getStats() failed with error: {}", _0)]
#[from(ignore)]
GetStatsException(platform::Error),
#[display(fmt = "Failed to set local SDP description: {}", _0)]
#[from(ignore)]
SetLocalDescriptionFailed(platform::Error),
#[display(fmt = "Failed to set remote SDP description: {}", _0)]
#[from(ignore)]
SetRemoteDescriptionFailed(platform::Error),
}