pyrosql_protocol/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum PyroLinkError {
8 #[error("QUIC connection error: {0}")]
10 Connection(#[from] quinn::ConnectionError),
11
12 #[error("QUIC stream error: {0}")]
14 Stream(String),
15
16 #[error("stream I/O error: {0}")]
18 Io(#[from] std::io::Error),
19
20 #[error("framing error: {0}")]
22 Framing(String),
23
24 #[error("unknown RPC type byte: {0:#04x}")]
26 UnknownRpcType(u8),
27
28 #[error("TLS configuration error: {0}")]
30 Tls(String),
31
32 #[error("bind error: {0}")]
34 Bind(String),
35
36 #[error("Flight SQL error: {0}")]
38 Flight(String),
39
40 #[error("internal error: {0}")]
42 Internal(String),
43}
44
45impl From<quinn::ReadExactError> for PyroLinkError {
46 fn from(e: quinn::ReadExactError) -> Self {
47 match e {
48 quinn::ReadExactError::FinishedEarly(n) => {
49 Self::Framing(format!("stream ended {n} bytes early"))
50 }
51 quinn::ReadExactError::ReadError(re) => Self::Stream(re.to_string()),
52 }
53 }
54}