use std::io;
use thiserror::Error;
#[derive(Debug, Error)]
pub enum SpoolError {
#[error("failed to open spool at {path}: {message}")]
Open { path: String, message: String },
#[error("spool queue error: {0}")]
Queue(String),
#[error("spool I/O error: {0}")]
Io(#[from] io::Error),
#[error("spool is full: maximum {max} items reached")]
MaxItemsReached { max: usize },
#[error("spool is full: maximum size {max_bytes} bytes reached")]
MaxSizeReached { max_bytes: u64 },
#[error("compression error: {0}")]
Compression(String),
#[error("decompression error: {0}")]
Decompression(String),
#[error("spool file is corrupted: {0}")]
Corrupted(String),
}