seedlink_rs_protocol/
error.rs1use 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>;