2023-09-23 01:53:45 +00:00
|
|
|
use std::{io, result};
|
|
|
|
|
|
|
|
|
|
use thiserror::Error;
|
|
|
|
|
|
2024-04-24 23:12:46 +08:00
|
|
|
use crate::{tunnel, tunnels};
|
2023-09-23 01:53:45 +00:00
|
|
|
|
2024-03-13 00:15:22 +08:00
|
|
|
use super::PeerId;
|
|
|
|
|
|
2023-09-23 01:53:45 +00:00
|
|
|
#[derive(Error, Debug)]
|
|
|
|
|
pub enum Error {
|
|
|
|
|
#[error("io error")]
|
|
|
|
|
IOError(#[from] io::Error),
|
|
|
|
|
#[error("rust tun error {0}")]
|
|
|
|
|
TunError(#[from] tun::Error),
|
|
|
|
|
#[error("tunnel error {0}")]
|
|
|
|
|
TunnelError(#[from] tunnels::TunnelError),
|
|
|
|
|
#[error("Peer has no conn, PeerId: {0}")]
|
2024-03-13 00:15:22 +08:00
|
|
|
PeerNoConnectionError(PeerId),
|
2024-03-23 22:20:19 +08:00
|
|
|
#[error("RouteError: {0:?}")]
|
|
|
|
|
RouteError(Option<String>),
|
2023-09-23 01:53:45 +00:00
|
|
|
#[error("Not found")]
|
|
|
|
|
NotFound,
|
|
|
|
|
#[error("Invalid Url: {0}")]
|
|
|
|
|
InvalidUrl(String),
|
|
|
|
|
#[error("Shell Command error: {0}")]
|
|
|
|
|
ShellCommandError(String),
|
|
|
|
|
// #[error("Rpc listen error: {0}")]
|
|
|
|
|
// RpcListenError(String),
|
|
|
|
|
#[error("Rpc connect error: {0}")]
|
|
|
|
|
RpcConnectError(String),
|
|
|
|
|
#[error("Rpc error: {0}")]
|
|
|
|
|
RpcClientError(#[from] tarpc::client::RpcError),
|
|
|
|
|
#[error("Timeout error: {0}")]
|
|
|
|
|
Timeout(#[from] tokio::time::error::Elapsed),
|
|
|
|
|
#[error("url in blacklist")]
|
|
|
|
|
UrlInBlacklist,
|
|
|
|
|
#[error("unknown data store error")]
|
|
|
|
|
Unknown,
|
|
|
|
|
#[error("anyhow error: {0}")]
|
|
|
|
|
AnyhowError(#[from] anyhow::Error),
|
2024-04-24 23:12:46 +08:00
|
|
|
|
|
|
|
|
#[error("wait resp error: {0}")]
|
|
|
|
|
WaitRespError(String),
|
|
|
|
|
|
|
|
|
|
#[error("tunnel error")]
|
|
|
|
|
TunnelErr(#[from] tunnel::TunnelError),
|
|
|
|
|
|
|
|
|
|
#[error("message decode error: {0}")]
|
|
|
|
|
MessageDecodeError(String),
|
2023-09-23 01:53:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub type Result<T> = result::Result<T, Error>;
|
|
|
|
|
|
|
|
|
|
// impl From for std::
|