openconnect_core/
result.rs

1use crate::{events::Events, VpnClient};
2use thiserror::Error;
3
4#[derive(Error, Debug, Clone, PartialEq, Eq)]
5pub enum OpenconnectError {
6    #[error("Failed to create new VPN entry point: {0}")]
7    EntrypointConfigError(String),
8
9    #[error("Failed to setup shutdown error: {0}")]
10    SetupShutdownError(String),
11
12    #[error("Failed to setup cookie manually. Error code: {0}")]
13    SetCookieError(i32),
14
15    #[error("Failed to obtain cookie from server. Error code: {0}")]
16    ObtainCookieError(i32),
17
18    #[error("Failed to set protocol. Error code: {0}")]
19    SetProtocolError(i32),
20
21    #[error("Failed to set reported OS. Error code: {0}")]
22    SetReportOSError(i32),
23
24    #[error("Failed to setup command pipe. Error code: {0}")]
25    CmdPipeError(i32),
26
27    #[error("Failed to set HTTP proxy. Error code: {0}")]
28    SetProxyError(i32),
29
30    #[error("Failed to make CSTP connection. Error code: {0}")]
31    MakeCstpError(i32),
32
33    #[error("Failed to disable DTLS. Error code: {0}")]
34    DisableDTLSError(i32),
35
36    #[error("Failed to parse URL. Error code: {0}")]
37    ParseUrlError(i32),
38
39    #[error("Failed to setup tun device. Error code: {0}")]
40    SetupTunDeviceEror(i32),
41
42    #[error("Failed to set client certificate. Error code: {0}")]
43    SetClientCertError(i32),
44
45    #[error("Failed to set MCA certificate. Error code: {0}")]
46    SetMCACertError(i32),
47
48    #[error("Failed to set MCA private key. Error code: {0}")]
49    MainLoopError(i32),
50
51    #[error("Failed to get IP info. Error code: {0}")]
52    GetIpInfoError(i32),
53
54    #[error("Other general error: {0}")]
55    OtherError(String),
56}
57
58pub type OpenconnectResult<T> = std::result::Result<T, OpenconnectError>;
59
60pub trait EmitError<T> {
61    fn emit_error(self, client: &VpnClient) -> OpenconnectResult<T>;
62}
63
64impl<T> EmitError<T> for OpenconnectResult<T> {
65    fn emit_error(self, client: &VpnClient) -> OpenconnectResult<T> {
66        self.inspect_err(|e| client.emit_error(e))
67    }
68}