1use crate::types::ErrorCode;
4use thiserror::Error;
5
6#[derive(Debug, Error)]
8pub enum LiveSpeechError {
9 #[error("Configuration error: {0}")]
11 Config(#[from] crate::types::ConfigError),
12
13 #[error("Connection error: {0}")]
15 Connection(String),
16
17 #[error("WebSocket error: {0}")]
19 WebSocket(#[from] tokio_tungstenite::tungstenite::Error),
20
21 #[error("JSON error: {0}")]
23 Json(#[from] serde_json::Error),
24
25 #[error("URL error: {0}")]
27 Url(#[from] url::ParseError),
28
29 #[error("Not connected")]
31 NotConnected,
32
33 #[error("No active session")]
35 NoActiveSession,
36
37 #[error("Session already active")]
39 SessionAlreadyActive,
40
41 #[error("Already streaming")]
43 AlreadyStreaming,
44
45 #[error("Not streaming")]
47 NotStreaming,
48
49 #[error("Session error: {0}")]
51 SessionError(String),
52
53 #[error("Invalid parameter: {0}")]
55 InvalidParameter(String),
56
57 #[error("Connection timeout")]
59 ConnectionTimeout,
60
61 #[error("Authentication failed: {0}")]
63 AuthenticationFailed(String),
64
65 #[error("Server error ({code}): {message}")]
67 ServerError { code: ErrorCode, message: String },
68
69 #[error("Channel send error")]
71 ChannelSend,
72
73 #[error("Channel receive error")]
75 ChannelReceive,
76
77 #[error("Reconnection failed after {attempts} attempts")]
79 ReconnectionFailed { attempts: u32 },
80}
81
82pub type Result<T> = std::result::Result<T, LiveSpeechError>;