librqbit_dualstack_sockets/
error.rs1#[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>;