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: FSL-1.1-ALv2
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}