Skip to main content

hyperi_rustlib/spool/
error.rs

1// Project:   hyperi-rustlib
2// File:      src/spool/error.rs
3// Purpose:   Spool error types
4// Language:  Rust
5//
6// License:   BUSL-1.1
7// Copyright: (c) 2026 HYPERI PTY LIMITED
8
9//! Spool error types.
10
11use std::io;
12use thiserror::Error;
13
14/// Errors that can occur during spool operations.
15#[derive(Debug, Error)]
16pub enum SpoolError {
17    /// Failed to open or create the queue file.
18    #[error("failed to open spool at {path}: {message}")]
19    Open { path: String, message: String },
20
21    /// Queue file operation error.
22    #[error("spool queue error: {0}")]
23    Queue(String),
24
25    /// I/O error during queue operations.
26    #[error("spool I/O error: {0}")]
27    Io(#[from] io::Error),
28
29    /// Queue has reached its maximum item count.
30    #[error("spool is full: maximum {max} items reached")]
31    MaxItemsReached { max: usize },
32
33    /// Queue has reached its maximum size.
34    #[error("spool is full: maximum size {max_bytes} bytes reached")]
35    MaxSizeReached { max_bytes: u64 },
36
37    /// Compression error.
38    #[error("compression error: {0}")]
39    Compression(String),
40
41    /// Decompression error.
42    #[error("decompression error: {0}")]
43    Decompression(String),
44
45    /// Queue file is corrupted.
46    #[error("spool file is corrupted: {0}")]
47    Corrupted(String),
48}