embassy_socket/
err.rs

1use embassy_net::tcp;
2use embassy_sync::channel::TryReceiveError;
3
4/// socket result
5pub type SocketResult<T> = Result<T, SocketErr>;
6
7/// socket error
8#[derive(Debug)]
9pub enum SocketErr {
10    /// tcp error
11    TcpError(tcp::Error),
12    /// tcp connect error
13    ConnectError(tcp::ConnectError),
14    /// try receive error
15    TryReceiveError(TryReceiveError),
16    /// tcp accept error
17    AcceptError(tcp::AcceptError),
18}
19
20/// custom method
21impl SocketErr {
22    /// not route<br />
23    /// more see [tcp::ConnectError::NoRoute]
24    #[inline]
25    pub fn no_route() -> Self {
26        Self::ConnectError(tcp::ConnectError::NoRoute)
27    }
28}
29
30/// support tcp::error to socket err
31impl From<tcp::Error> for SocketErr {
32    #[inline]
33    fn from(value: tcp::Error) -> Self {
34        Self::TcpError(value)
35    }
36}
37
38/// support tcp::connectError to socket err
39impl From<tcp::ConnectError> for SocketErr {
40    #[inline]
41    fn from(value: tcp::ConnectError) -> Self {
42        Self::ConnectError(value)
43    }
44}
45
46/// support TryReceiveError to socket err
47impl From<TryReceiveError> for SocketErr {
48    #[inline]
49    fn from(value: TryReceiveError) -> Self {
50        Self::TryReceiveError(value)
51    }
52}
53
54/// support accept error to socket err
55impl From<tcp::AcceptError> for SocketErr {
56    #[inline]
57    fn from(value: tcp::AcceptError) -> Self {
58        Self::AcceptError(value)
59    }
60}