1use std::net::AddrParseError;
2use std::path::PathBuf;
3
4#[derive(Debug, thiserror::Error)]
5pub enum Error {
6 #[error("invalid peer address: {0}")]
7 InvalidPeerAddress(#[from] AddrParseError),
8
9 #[error("invalid transfer input: {0}")]
10 InvalidInput(String),
11
12 #[error("peer not found: {0}")]
13 PeerNotFound(String),
14
15 #[error("peer lookup is ambiguous: {0}")]
16 AmbiguousPeer(String),
17
18 #[error("filesystem error at {}: {source}", path.display())]
19 IoPath {
20 path: PathBuf,
21 #[source]
22 source: std::io::Error,
23 },
24
25 #[error("filesystem error: {0}")]
26 Io(#[from] std::io::Error),
27
28 #[error("configuration directory is unavailable")]
29 ConfigDirUnavailable,
30
31 #[error("configuration parse failed: {0}")]
32 ConfigParse(String),
33
34 #[error("configuration serialization failed: {0}")]
35 ConfigSerialize(String),
36
37 #[error("mDNS discovery failed: {0}")]
38 Discovery(String),
39
40 #[error("certificate generation failed: {0}")]
41 CertificateGeneration(#[from] rcgen::Error),
42
43 #[error("TLS configuration failed: {0}")]
44 Tls(#[from] rustls::Error),
45
46 #[error("QUIC connection failed: {0}")]
47 Connect(#[from] quinn::ConnectError),
48
49 #[error("QUIC connection closed: {0}")]
50 Connection(#[from] quinn::ConnectionError),
51
52 #[error("QUIC read failed: {0}")]
53 Read(#[from] quinn::ReadError),
54
55 #[error("QUIC exact read failed: {0}")]
56 ReadExact(#[from] quinn::ReadExactError),
57
58 #[error("QUIC write failed: {0}")]
59 Write(#[from] quinn::WriteError),
60
61 #[error("QUIC stream is closed: {0}")]
62 ClosedStream(#[from] quinn::ClosedStream),
63
64 #[error("QUIC endpoint connection refused")]
65 NoIncomingConnection,
66
67 #[error("crypto configuration failed: {0}")]
68 CryptoConfig(String),
69
70 #[error("protocol error: {0}")]
71 Protocol(String),
72
73 #[error("transfer failed: {0}")]
74 Transfer(String),
75
76 #[error("{0} is not implemented yet")]
77 NotImplemented(&'static str),
78}
79
80pub type Result<T> = std::result::Result<T, Error>;