openconnect_core/
result.rs1use 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}