Skip to main content

seedlink_rs_protocol/
error.rs

1use crate::version::ProtocolVersion;
2
3#[derive(Debug, thiserror::Error)]
4pub enum SeedlinkError {
5    #[error("frame too short: expected {expected}, actual {actual}")]
6    FrameTooShort { expected: usize, actual: usize },
7
8    #[error("invalid signature: expected {expected:?}, actual {actual:?}")]
9    InvalidSignature {
10        expected: &'static str,
11        actual: [u8; 2],
12    },
13
14    #[error("invalid sequence: {0}")]
15    InvalidSequence(String),
16
17    #[error("invalid command: {0}")]
18    InvalidCommand(String),
19
20    #[error("version mismatch: {command} not valid for {version:?}")]
21    VersionMismatch {
22        command: &'static str,
23        version: ProtocolVersion,
24    },
25
26    #[error("invalid response: {0}")]
27    InvalidResponse(String),
28
29    #[error("server error: [{code}] {description}")]
30    ServerError { code: String, description: String },
31
32    #[error("invalid info level: {0}")]
33    InvalidInfoLevel(String),
34
35    #[error("invalid payload format: {0}")]
36    InvalidPayloadFormat(u8),
37
38    #[error("invalid payload subformat: {0}")]
39    InvalidPayloadSubformat(u8),
40
41    #[error("payload length mismatch: expected {expected}, actual {actual}")]
42    PayloadLengthMismatch { expected: usize, actual: usize },
43
44    #[error("miniseed error: {0}")]
45    Miniseed(#[from] miniseed_rs::MseedError),
46}
47
48pub type Result<T> = std::result::Result<T, SeedlinkError>;