AT-based link agregator. Mirror of https://github.com/likeandscribe/frontpage
at main 50 lines 2.0 kB view raw
1use std::io; 2use thiserror::Error; 3 4/// Possible errors that can occur when a [JetstreamConfig](crate::JetstreamConfig) that is passed 5/// to a [JetstreamConnector](crate::JetstreamConnector) is invalid. 6#[derive(Error, Debug)] 7pub enum ConfigValidationError { 8 #[error("too many wanted collections: {0} > 100")] 9 TooManyWantedCollections(usize), 10 #[error("too many wanted DIDs: {0} > 10,000")] 11 TooManyDids(usize), 12} 13 14/// Possible errors that can occur in the process of connecting to a Jetstream instance over 15/// WebSockets. 16/// 17/// See [JetstreamConnector::connect](crate::JetstreamConnector::connect). 18#[derive(Error, Debug)] 19pub enum ConnectionError { 20 #[error("invalid endpoint: {0}")] 21 InvalidEndpoint(#[from] url::ParseError), 22 #[error("failed to connect to Jetstream instance: {0}")] 23 WebSocketFailure(#[from] tokio_tungstenite::tungstenite::Error), 24 #[error("the Jetstream config is invalid (this really should not happen here): {0}")] 25 InvalidConfig(#[from] ConfigValidationError), 26} 27 28/// Possible errors that can occur when receiving events from a Jetstream instance over WebSockets. 29/// 30/// See [websocket_task](crate::websocket_task). 31#[derive(Error, Debug)] 32pub enum JetstreamEventError { 33 #[error( 34 "received websocket message that could not be deserialized as JSON: {json:?}. Error: {error:?}" 35 )] 36 ReceivedMalformedJSON { 37 error: serde_json::Error, 38 json: String, 39 }, 40 #[error("failed to load built-in zstd dictionary for decoding: {0}")] 41 CompressionDictionaryError(io::Error), 42 #[error("failed to decode zstd-compressed message: {0}")] 43 CompressionDecoderError(io::Error), 44 #[error("all receivers were dropped but the websocket connection failed to close cleanly")] 45 WebSocketCloseFailure, 46 #[error("Received a websocket error: {0}")] 47 WebsocketReceiveFailure(tokio_tungstenite::tungstenite::Error), 48 #[error("Received an event that was not a binary or text message: {0}")] 49 UnexpectedEvent(tokio_tungstenite::tungstenite::Message), 50}