cliquenet/
error.rs

1use std::io;
2
3use thiserror::Error;
4
5use crate::{Address, frame::InvalidHeader};
6
7/// The empty type has no values.
8#[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
9pub(crate) enum Empty {}
10
11/// The various errors that can occur during networking.
12#[derive(Debug, Error)]
13pub enum NetworkError {
14    /// Generic I/O error.
15    #[error("i/o error: {0}")]
16    Io(#[from] io::Error),
17
18    /// Bind error.
19    #[error("error binding to address {0}: {1}")]
20    Bind(Address, #[source] io::Error),
21
22    /// The received frame header is not valid.
23    #[error("invalid frame header: {0}")]
24    InvalidFrameHeader(#[from] InvalidHeader),
25
26    /// The received frame has an unknown type.
27    #[error("unknown frame type: {0}")]
28    UnknownFrameType(u8),
29
30    /// Generic Noise error.
31    #[error("noise error: {0}")]
32    Noise(#[from] snow::Error),
33
34    /// The Noise handshake message is not valid.
35    #[error("invalid handshake message")]
36    InvalidHandshakeMessage,
37
38    /// The total message size exceeds the allowed maximum.
39    #[error("message too large")]
40    MessageTooLarge,
41
42    /// An MPSC channel is unexpectedly closed.
43    #[error("channel closed")]
44    ChannelClosed,
45
46    /// A receive budget has unexpectedly closed.
47    #[error("receive budget closed")]
48    BudgetClosed,
49
50    /// An operation timed out.
51    #[error("timeout")]
52    Timeout,
53}