1pub type Result<T> = std::result::Result<T, Error>;
3
4#[derive(Debug, thiserror::Error)]
6pub enum Error {
7 #[error("invalid handshake: {0}")]
9 InvalidHandshake(String),
10
11 #[error("invalid message ID {0}")]
13 InvalidMessageId(u8),
14
15 #[error("message too short: expected at least {expected} bytes, got {got}")]
17 MessageTooShort {
18 expected: usize,
20 got: usize,
22 },
23
24 #[error("message too large: {size} bytes (max {max})")]
26 MessageTooLarge {
27 size: usize,
29 max: usize,
31 },
32
33 #[error("invalid extended message: {0}")]
35 InvalidExtended(String),
36
37 #[error("encryption handshake failed: {0}")]
39 EncryptionHandshakeFailed(String),
40
41 #[error("unsupported crypto method")]
43 UnsupportedCryptoMethod,
44
45 #[error("encryption required but peer does not support it")]
47 EncryptionRequired,
48
49 #[error("bencode: {0}")]
51 Bencode(#[from] irontide_bencode::Error),
52
53 #[error("SSL/TLS: {0}")]
55 Ssl(String),
56
57 #[error("I/O: {0}")]
59 Io(#[from] std::io::Error),
60}