Skip to main content

xcelerate_core/
error.rs

1use thiserror::Error;
2
3#[derive(Debug, Error, uniffi::Error)]
4#[uniffi(flat_error)]
5pub enum XcelerateError {
6    #[error("WebSocket error: {0}")]
7    WsError(String),
8    
9    #[error("JSON error: {0}")]
10    SerdeError(String),
11    
12    #[error("CDP Error {code}: {message}")]
13    CdpResponseError { code: i32, message: String },
14    
15    #[error("HTTP error: {0}")]
16    HttpError(String),
17
18    #[error("Target not found: {0}")]
19    NotFound(String),
20    
21    #[error("Internal channel error")]
22    InternalError,
23}
24
25impl From<tokio_tungstenite::tungstenite::Error> for XcelerateError {
26    fn from(e: tokio_tungstenite::tungstenite::Error) -> Self {
27        Self::WsError(e.to_string())
28    }
29}
30
31impl From<serde_json::Error> for XcelerateError {
32    fn from(e: serde_json::Error) -> Self {
33        Self::SerdeError(e.to_string())
34    }
35}
36
37impl From<reqwest::Error> for XcelerateError {
38    fn from(e: reqwest::Error) -> Self {
39        Self::HttpError(e.to_string())
40    }
41}
42
43pub type XcelerateResult<T> = Result<T, XcelerateError>;