shadowsocks_rust/
error.rs1pub type ShadowsocksResult<T = ()> = Result<T, ShadowsocksError>;
5
6#[derive(Clone, Debug)]
9pub enum ShadowsocksError {
10 ServerExitUnexpectedly(String),
11 ServerAborted(String),
12 LoadConfigFailure(String),
13 LoadAclFailure(String),
14 InsufficientParams(String),
15}
16
17impl ShadowsocksError {
18 pub fn exit_code(&self) -> sysexits::ExitCode {
20 match self {
21 Self::ServerExitUnexpectedly(_) | Self::ServerAborted(_) => sysexits::ExitCode::Software,
22 Self::LoadConfigFailure(_) | Self::LoadAclFailure(_) => sysexits::ExitCode::Config,
23 Self::InsufficientParams(_) => sysexits::ExitCode::Usage,
24 }
25 }
26}
27
28impl std::fmt::Display for ShadowsocksError {
29 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
30 match self {
31 Self::ServerExitUnexpectedly(msg)
32 | Self::ServerAborted(msg)
33 | Self::LoadConfigFailure(msg)
34 | Self::LoadAclFailure(msg)
35 | Self::InsufficientParams(msg) => write!(f, "{msg}"),
36 }
37 }
38}
39
40impl std::error::Error for ShadowsocksError {}