use std::{io, net::AddrParseError};
use thiserror::Error;
use tokio::sync::{mpsc::error::SendError, oneshot::error::RecvError};
#[derive(Error, Debug)]
pub enum Error {
#[error("network io error: {0}")]
IoError(#[from] io::Error),
#[error("address parse error: {0}")]
AddrParseError(#[from] AddrParseError),
#[error("malformed session announement packet: {0:?}")]
MalformedPacket(Vec<u8>),
#[error("sdp parse error: {0}")]
SdpParseError(#[from] sdp::Error),
#[error("not implemented: {0}")]
NotImplemented(&'static str),
#[error("internal channel error: {0}")]
RecvError(#[from] RecvError),
}
impl<T> From<SendError<T>> for Error {
fn from(_: SendError<T>) -> Self {
Error::IoError(io::Error::other(
"internal channel error",
))
}
}
pub type SapResult<T> = Result<T, Error>;