librqbit_dualstack_sockets/
error.rs

1#[derive(thiserror::Error, Debug)]
2pub enum Error {
3    #[error("error creating socket: {0}")]
4    SocketNew(std::io::Error),
5    #[error("error binding: {0}")]
6    Bind(std::io::Error),
7    #[error("error setting only_v6={value}: {source}")]
8    OnlyV6 { value: bool, source: std::io::Error },
9    #[error("error setting SO_REUSEADDR: {0}")]
10    ReuseAddress(std::io::Error),
11    #[error("error getting local_addr(): {0}")]
12    LocalAddr(std::io::Error),
13    #[error("as_socket() returned None")]
14    AsSocket,
15    #[error("error setting nonblocking=true: {0}")]
16    SetNonblocking(std::io::Error),
17    #[error("mismatch between local_addr and requested bind_addr")]
18    LocalBindAddrMismatch,
19    #[error("error listening")]
20    Listen(std::io::Error),
21    #[error("error calling tokio from_std")]
22    TokioFromStd(std::io::Error),
23    #[error("did not join any multicast groups")]
24    MulticastJoinFail,
25    #[error("provided link-local address is not link-local")]
26    ProvidedLinkLocalAddrIsntLinkLocal,
27    #[error("no network interfaces found")]
28    NoNics,
29    #[error("provided site-local address is not site-local")]
30    ProvidedSiteLocalAddrIsNotSiteLocal,
31    #[error("error setting SO_REUSEPORT")]
32    ReusePort(std::io::Error),
33    #[error("error waiting for socket to become writeable")]
34    Writeable(std::io::Error),
35    #[error("error calling set_multicast_if_v6")]
36    SetMulticastIpv6(std::io::Error),
37    #[error("error calling set_multicast_if_v4")]
38    SetMulticastIpv4(std::io::Error),
39    #[error("send_multicast_msg called with conflicting parameters")]
40    SendMulticastMsgProtocolMismatch,
41    #[error("error sending: {0:#}")]
42    Send(std::io::Error),
43    #[error("binding to device is not supported on your OS")]
44    BindDeviceNotSupported,
45    #[error("invalid bind device")]
46    BindDeviceInvalid,
47    #[error("invalid bind device: {0:#}")]
48    BindDeviceInvalidError(std::io::Error),
49    #[error("error setting bind device: {0:#}")]
50    BindDeviceSetDeviceError(std::io::Error),
51    #[error("error connecting: {0:#}")]
52    Connect(std::io::Error),
53}
54
55pub type Result<T> = core::result::Result<T, Error>;