QuickDID is a high-performance AT Protocol identity resolution service written in Rust. It provides handle-to-DID resolution with Redis-backed caching and queue processing.
at main 2.6 kB view raw
1//! Queue operation error types. 2//! 3//! This module defines the error types that can occur during queue operations, 4//! including push failures, serialization issues, and backend-specific errors. 5 6use thiserror::Error; 7 8/// Queue operation errors. 9/// 10/// These errors represent various failure modes that can occur when working 11/// with queue adapters, from connection issues to serialization problems. 12#[derive(Error, Debug)] 13pub enum QueueError { 14 /// Failed to push an item to the queue. 15 #[error("error-quickdid-queue-1 Failed to push to queue: {0}")] 16 PushFailed(String), 17 18 /// The queue is full and cannot accept new items. 19 #[error("error-quickdid-queue-2 Queue is full")] 20 QueueFull, 21 22 /// The queue has been closed and is no longer accepting items. 23 #[error("error-quickdid-queue-3 Queue is closed")] 24 QueueClosed, 25 26 /// Redis connection failed. 27 #[error("error-quickdid-queue-4 Redis connection failed: {0}")] 28 RedisConnectionFailed(String), 29 30 /// Redis operation failed. 31 #[error("error-quickdid-queue-5 Redis operation failed: {operation}: {details}")] 32 RedisOperationFailed { 33 /// The Redis operation that failed 34 operation: String, 35 /// Details about the failure 36 details: String, 37 }, 38 39 /// Failed to serialize an item for storage. 40 #[error("error-quickdid-queue-6 Serialization failed: {0}")] 41 SerializationFailed(String), 42 43 /// Failed to deserialize an item from storage. 44 #[error("error-quickdid-queue-7 Deserialization failed: {0}")] 45 DeserializationFailed(String), 46 47 /// Item not found in worker queue during acknowledgment. 48 #[error("error-quickdid-queue-8 Item not found in worker queue during acknowledgment")] 49 AckItemNotFound, 50} 51 52/// Result type alias for queue operations. 53pub type Result<T> = std::result::Result<T, QueueError>; 54 55#[cfg(test)] 56mod tests { 57 use super::*; 58 59 #[test] 60 fn test_error_messages() { 61 let err = QueueError::PushFailed("test failure".to_string()); 62 assert!(err.to_string().contains("error-quickdid-queue-1")); 63 assert!(err.to_string().contains("test failure")); 64 65 let err = QueueError::QueueFull; 66 assert_eq!(err.to_string(), "error-quickdid-queue-2 Queue is full"); 67 68 let err = QueueError::RedisOperationFailed { 69 operation: "LPUSH".to_string(), 70 details: "connection timeout".to_string(), 71 }; 72 assert!(err.to_string().contains("error-quickdid-queue-5")); 73 assert!(err.to_string().contains("LPUSH")); 74 assert!(err.to_string().contains("connection timeout")); 75 } 76}