use url::Url;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RequestId(pub u64);
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct StreamId(pub usize);
#[derive(Debug, Clone, PartialEq, Eq)]
#[non_exhaustive]
pub enum Action {
FetchManifest {
id: RequestId,
url: Url,
},
FetchFragment {
id: RequestId,
stream: StreamId,
start: u64,
duration: u64,
url: Url,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub struct FetchFailure {
pub status: Option<u16>,
pub retry_after_us: u64,
}
impl FetchFailure {
pub(crate) fn is_not_found(self) -> bool {
matches!(self.status, Some(NOT_FOUND | GONE))
}
}
pub(crate) const NOT_FOUND: u16 = 404;
pub(crate) const GONE: u16 = 410;