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("Failed to add ICE candidate: {_0}")]
#[from(ignore)]
AddIceCandidateFailed(platform::Error),
#[display("Failed to create SDP answer: {_0}")]
#[from(ignore)]
CreateAnswerFailed(platform::Error),
#[display("Failed to create PeerConnection: {_0}")]
#[from(ignore)]
PeerCreationError(platform::Error),
#[display("Failed to create SDP offer: {_0}")]
#[from(ignore)]
CreateOfferFailed(platform::Error),
#[display("Failed to get RTCStats: {_0}")]
RtcStatsError(#[cause] RtcStatsError),
#[display("PeerConnection.getStats() failed with error: {_0}")]
#[from(ignore)]
GetStatsException(platform::Error),
#[display("Failed to set local SDP description: {_0}")]
#[from(ignore)]
SetLocalDescriptionFailed(platform::Error),
#[display("Failed to set remote SDP description: {_0}")]
#[from(ignore)]
SetRemoteDescriptionFailed(platform::Error),
}