Skip to main content

helius_laserstream/
error.rs

1use laserstream_core_proto::tonic::Status;
2use url::ParseError;
3use futures_channel::mpsc::SendError;
4use laserstream_core_client::{GeyserGrpcClientError, GeyserGrpcBuilderError};
5use thiserror::Error;
6
7#[derive(Debug, Error)]
8pub enum LaserstreamError {
9    #[error("gRPC transport error: {0}")]
10    Transport(#[from] laserstream_core_proto::tonic::transport::Error),
11
12    #[error("gRPC status error: {0}")]
13    Status(#[from] Status),
14
15    #[error("Invalid endpoint URL: {0}")]
16    InvalidUrl(#[from] ParseError),
17
18    #[error("Stream unexpectedly ended")]
19    StreamEnded,
20
21    #[error("Subscription channel send error: {0}")]
22    SubscriptionSendError(#[from] SendError),
23
24    #[error("Maximum reconnection attempts reached: {0}")]
25    MaxReconnectAttempts(Status),
26
27    #[error("IO error: {0}")]
28    Io(#[from] std::io::Error),
29
30    #[error("Laserstream client error: {0}")]
31    ClientError(#[from] GeyserGrpcClientError),
32
33    #[error("Laserstream builder error: {0}")]
34    BuilderError(#[from] GeyserGrpcBuilderError),
35
36    #[error("Invalid API Key format")]
37    InvalidApiKeyFormat,
38
39    #[error("Connection error: {0}")]
40    ConnectionError(String),
41}