1use std::sync::Arc;
2
3#[derive(Debug, thiserror::Error, Clone)]
4pub enum Error {
5 #[error("transfork error: {0}")]
6 Transfork(#[from] moq_transfork::Error),
7
8 #[error("decode error: {0}")]
9 Decode(#[from] moq_transfork::coding::DecodeError),
10
11 #[error("json error: {0}")]
12 Json(Arc<serde_json::Error>),
13
14 #[error("duplicate track")]
15 DuplicateTrack,
16
17 #[error("missing track")]
18 MissingTrack,
19
20 #[error("invalid session ID")]
21 InvalidSession,
22
23 #[error("empty group")]
24 EmptyGroup,
25
26 #[error("invalid codec")]
27 InvalidCodec,
28
29 #[error("unsupported codec")]
30 UnsupportedCodec,
31
32 #[error("expected int")]
33 ExpectedInt(#[from] std::num::ParseIntError),
34
35 #[error("hex error: {0}")]
36 Hex(#[from] hex::FromHexError),
37}
38
39pub type Result<T> = std::result::Result<T, Error>;
40
41impl From<serde_json::Error> for Error {
43 fn from(err: serde_json::Error) -> Self {
44 Error::Json(Arc::new(err))
45 }
46}