use derive_more::with_trait::{Display, From};
#[cfg(doc)]
use platform::Transceiver;
use crate::{
platform::{self, RtcStatsError},
utils::Caused,
};
#[derive(Debug)]
pub enum SdpType {
Offer(String),
Answer(String),
}
#[derive(Clone, Copy, Debug, Display, PartialEq, Eq)]
pub enum IceGatheringState {
New,
Gathering,
Complete,
}
#[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),
#[display("Failed to update sender encodings: {_0}")]
#[from(ignore)]
UpdateSendEncodingsError(platform::transceiver::UpdateSendEncodingError),
}