1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//! Error type for the peer library.
use libp2p_tls::certificate::GenError;
use thiserror::Error;

/// Errors generated by the peer library.
#[derive(Debug, Error)]
pub enum Error {
    /// Error generated when listening fails.
    #[error("listen {0} failed: {1}")]
    ListenFailed(String, String),

    /// Error generated when dialing fails.
    #[error("dial {0} failed")]
    DialFailed(String),

    /// Error generated when an inbound message fails.
    #[error("outbound message failed: {0}")]
    InboundFailure(String),

    /// Error generated when an outbound message fails.
    #[error("outbound message failed: {0}")]
    OutboundFailure(String),

    /// Error generated when an error occurs on an outbound connection.
    #[error("outgoing connection error: {0}")]
    OutgoingConnection(String),

    /// Error generated when a multiaddr should contain a peer identifier.
    #[error("expected peer multiaddr to contain peer ID")]
    NoMultiAddrPeerId,

    /// Error generated when a register operation is already running.
    #[error("register is already running for the given namespace")]
    RegisterRunning,

    /// Error generated when a discover operation is already running.
    #[error("discover is already running for the given namespace")]
    DiscoverRunning,

    /// Error generated by the standard I/O handling.
    #[error(transparent)]
    Io(#[from] std::io::Error),

    /// Error generated attempting to parse a socket address.
    #[error(transparent)]
    AddrParse(#[from] std::net::AddrParseError),

    /// Error generated by the hex library.
    #[error(transparent)]
    Hex(#[from] hex::FromHexError),

    /// Error generated dialing a peer.
    #[error(transparent)]
    Dial(#[from] libp2p::swarm::DialError),

    /// Error generated by the noise library.
    #[error(transparent)]
    Noise(#[from] libp2p::noise::Error),

    /// Error generated by the multiaddr library.
    #[error(transparent)]
    Multiaddr(#[from] libp2p::multiaddr::Error),

    /// Error generated parsing in the identity library.
    #[error(transparent)]
    IdentityParse(#[from] libp2p::identity::ParseError),

    /// Error generated when by decoding an identity keypair.
    #[error(transparent)]
    IdentityDecoding(#[from] libp2p::identity::DecodingError),

    /// Error generated when by the futures mpsc sender.
    #[error(transparent)]
    FutureMpscSend(#[from] futures::channel::mpsc::SendError),

    /// Error generated when by the futures oneshot.
    #[error(transparent)]
    FutureOneshotCancel(#[from] futures::channel::oneshot::Canceled),

    /// Error generated configuring the noise protocol for a swarm.
    #[error(transparent)]
    SwarmNoise(#[from] either::Either<GenError, libp2p_noise::Error>),
}