Skip to main content

hyperi_rustlib/tiered_sink/
error.rs

1// Project:   hyperi-rustlib
2// File:      src/tiered_sink/error.rs
3// Purpose:   TieredSink error types
4// Language:  Rust
5//
6// License:   BUSL-1.1
7// Copyright: (c) 2026 HYPERI PTY LIMITED
8
9//! TieredSink error types.
10
11use std::io;
12use thiserror::Error;
13
14/// Errors that can occur in TieredSink operations.
15#[derive(Debug, Error)]
16pub enum TieredSinkError {
17    /// Failed to open or create the spool file.
18    #[error("failed to open spool at {path}: {message}")]
19    SpoolOpen { path: String, message: String },
20
21    /// Spool operation failed.
22    #[error("spool error: {0}")]
23    Spool(String),
24
25    /// Spool is full (max items or size reached).
26    #[error("spool is full: {0}")]
27    SpoolFull(String),
28
29    /// Compression/decompression failed.
30    #[error("codec error: {0}")]
31    Codec(#[from] io::Error),
32
33    /// Primary sink returned a fatal error.
34    #[error("sink error: {0}")]
35    Sink(String),
36
37    /// Disk is unavailable (full or inaccessible).
38    #[error("disk unavailable for spooling")]
39    DiskUnavailable,
40
41    /// Operation was cancelled.
42    #[error("operation cancelled")]
43    Cancelled,
44}