52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
use thiserror::Error;
|
|
|
|
#[derive(Error, Debug)]
|
|
pub enum RelayError {
|
|
#[error("transport error: {0}")]
|
|
Transport(#[from] moq_transport::session::SessionError),
|
|
|
|
#[error("cache error: {0}")]
|
|
Cache(#[from] moq_transport::cache::CacheError),
|
|
|
|
#[error("api error: {0}")]
|
|
MoqApi(#[from] moq_api::ApiError),
|
|
|
|
#[error("url error: {0}")]
|
|
Url(#[from] url::ParseError),
|
|
|
|
#[error("webtransport client error: {0}")]
|
|
WebTransportClient(#[from] webtransport_quinn::ClientError),
|
|
|
|
#[error("webtransport server error: {0}")]
|
|
WebTransportServer(#[from] webtransport_quinn::ServerError),
|
|
|
|
#[error("missing node")]
|
|
MissingNode,
|
|
}
|
|
|
|
impl moq_transport::MoqError for RelayError {
|
|
fn code(&self) -> u32 {
|
|
match self {
|
|
Self::Transport(err) => err.code(),
|
|
Self::Cache(err) => err.code(),
|
|
Self::MoqApi(_err) => 504,
|
|
Self::Url(_) => 500,
|
|
Self::MissingNode => 500,
|
|
Self::WebTransportClient(_) => 504,
|
|
Self::WebTransportServer(_) => 500,
|
|
}
|
|
}
|
|
|
|
fn reason(&self) -> String {
|
|
match self {
|
|
Self::Transport(err) => format!("transport error: {}", err.reason()),
|
|
Self::Cache(err) => format!("cache error: {}", err.reason()),
|
|
Self::MoqApi(err) => format!("api error: {}", err),
|
|
Self::Url(err) => format!("url error: {}", err),
|
|
Self::MissingNode => "missing node".to_owned(),
|
|
Self::WebTransportServer(err) => format!("upstream server error: {}", err),
|
|
Self::WebTransportClient(err) => format!("upstream client error: {}", err),
|
|
}
|
|
}
|
|
}
|