#[derive(Debug, Clone, thiserror::Error)]
pub enum CoinbaseWsError {
#[error("URL parsing failed: {0}")]
UrlParsing(String),
#[error("message serialization failed: {0}")]
MessageSerialization(String),
#[error("message deserialization failed: {0}")]
MessageDeserialization(String),
#[error("WebSocket connection failed: {0}")]
Connection(String),
#[error("channel send failed: {0}")]
ChannelSend(String),
#[error("authentication failed: {0}")]
Auth(String),
}
impl CoinbaseWsError {
#[must_use]
pub fn is_retryable(&self) -> bool {
matches!(self, Self::Connection(_) | Self::ChannelSend(_))
}
}