supabase_client_realtime/
error.rs1use std::time::Duration;
2
3use crate::types::ChannelState;
4use supabase_client_core::SupabaseError;
5
6#[derive(Debug, thiserror::Error)]
7pub enum RealtimeError {
8 #[error("Invalid configuration: {0}")]
9 InvalidConfig(String),
10
11 #[cfg(not(target_arch = "wasm32"))]
12 #[error("WebSocket error: {0}")]
13 WebSocket(#[from] tokio_tungstenite::tungstenite::Error),
14
15 #[cfg(target_arch = "wasm32")]
16 #[error("WebSocket error: {0}")]
17 WebSocket(String),
18
19 #[error("URL parse error: {0}")]
20 UrlParse(#[from] url::ParseError),
21
22 #[error("Serialization error: {0}")]
23 Serialization(#[from] serde_json::Error),
24
25 #[error("Channel not found: {0}")]
26 ChannelNotFound(String),
27
28 #[error("Channel already exists: {0}")]
29 ChannelAlreadyExists(String),
30
31 #[error("Invalid channel state: expected {expected:?}, actual {actual:?}")]
32 InvalidChannelState {
33 expected: ChannelState,
34 actual: ChannelState,
35 },
36
37 #[error("Subscribe timed out after {0:?}")]
38 SubscribeTimeout(Duration),
39
40 #[error("Connection closed")]
41 ConnectionClosed,
42
43 #[error("Server error: {0}")]
44 ServerError(String),
45
46 #[error("Internal error: {0}")]
47 Internal(String),
48}
49
50impl From<RealtimeError> for SupabaseError {
51 fn from(e: RealtimeError) -> Self {
52 SupabaseError::Realtime(e.to_string())
53 }
54}