1use std::io;
2
3use thiserror::Error;
4
5use crate::{Address, frame::InvalidHeader};
6
7#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9pub(crate) enum Empty {}
10
11#[derive(Debug, Error)]
13pub enum NetworkError {
14 #[error("i/o error: {0}")]
16 Io(#[from] io::Error),
17
18 #[error("error binding to address {0}: {1}")]
20 Bind(Address, #[source] io::Error),
21
22 #[error("invalid frame header: {0}")]
24 InvalidFrameHeader(#[from] InvalidHeader),
25
26 #[error("unknown frame type: {0}")]
28 UnknownFrameType(u8),
29
30 #[error("noise error: {0}")]
32 Noise(#[from] snow::Error),
33
34 #[error("invalid handshake message")]
36 InvalidHandshakeMessage,
37
38 #[error("message too large")]
40 MessageTooLarge,
41
42 #[error("channel closed")]
44 ChannelClosed,
45
46 #[error("receive budget closed")]
48 BudgetClosed,
49
50 #[error("timeout")]
52 Timeout,
53}