Skip to main content

mayuri/core/
errors.rs

1use fluent_uri::error;
2use rustls_pki_types::InvalidDnsNameError;
3use std::{io, num::ParseIntError, string::FromUtf8Error};
4use strum;
5use thiserror::Error;
6
7#[derive(Error, Debug)]
8pub enum HandshakeFailureError {
9    #[error("Invalid Handshake Header: {0}")]
10    HeaderError(String),
11
12    #[error("Handshake Validation Failed")]
13    ValidationError,
14}
15
16#[derive(Error, Debug)]
17pub enum URIError {
18    #[error("Incomplete URI: {0}")]
19    IncompleteURIError(String),
20
21    #[error("Malformed URI {0}")]
22    MalformedURIError(String),
23
24    #[error("URI couldnt be resolved")]
25    ResolveError(#[from] error::ResolveError),
26
27    #[error("DNS Error: {0}")]
28    DNSError(#[from] InvalidDnsNameError),
29
30    #[error("Bad Port Error: {0}")]
31    BadPortError(#[from] ParseIntError),
32}
33
34#[derive(Error, Debug)]
35pub enum ConnectionError {
36    #[error("Read Error: {0}")]
37    ReadError(String),
38
39    #[error("Write Error: {0}")]
40    WriteError(String),
41
42    #[error("Bad Connector: {0}")]
43    ConnectorError(String),
44}
45
46#[derive(Error, Debug)]
47pub enum ParseError {
48    #[error("Error converting payload to UTF-8: {0}")]
49    Utf8Error(#[from] FromUtf8Error),
50
51    #[error("Frame Error: {0}")]
52    FrameError(String),
53
54    #[error("Invalid Event Error: {source} for `{error_event}`")]
55    InvalidEventError {
56        error_event: String,
57
58        #[source]
59        source: strum::ParseError,
60    },
61}
62
63#[derive(Error, Debug)]
64pub enum WebSocketError {
65    #[error("[Handshake Failure] {0}")]
66    Handshake(#[from] HandshakeFailureError),
67
68    #[error("[URI Error] {0}")]
69    Uri(#[from] URIError),
70
71    #[error("[Connection Error] {0}")]
72    Stream(#[from] ConnectionError),
73
74    #[error("[Parse Error] {0}")]
75    Parse(#[from] ParseError),
76
77    #[error("[IO Error] {0}")]
78    Io(#[from] io::Error),
79}