snops_checkpoint/
errors.rs1use std::{io, path::PathBuf};
2
3use thiserror::Error;
4
5#[derive(Debug, Error)]
6pub enum ManagerLoadError {
7 #[error("invalid storage path: {0}")]
8 InvalidStoragePath(PathBuf),
9 #[error("error globbing storage path: {0}")]
10 GlobError(#[from] glob::PatternError),
11}
12
13#[derive(Debug, Error)]
14#[cfg(feature = "write")]
15pub enum ManagerCullError {
16 #[error("error opening storage: {0}")]
17 StorageOpenError(#[source] anyhow::Error),
18 #[error("error reading ledger: {0}")]
19 ReadLedger(#[source] anyhow::Error),
20}
21
22#[derive(Debug, Error)]
23#[cfg(feature = "write")]
24pub enum ManagerPollError {
25 #[error("error reading checkpoint header: {0}")]
26 Header(#[from] CheckpointHeaderError),
27 #[error("error reading checkpoint: {0}")]
28 Read(#[from] CheckpointReadError),
29 #[error("error inserting checkpoint: {0}")]
30 Insert(#[from] ManagerInsertError),
31}
32
33#[derive(Debug, Error)]
34#[cfg(feature = "write")]
35pub enum ManagerInsertError {
36 #[error("invalid storage path: {0}")]
37 InvalidStoragePath(PathBuf),
38 #[error("error opening file: {0}")]
39 FileError(#[source] io::Error),
40 #[error("error modifying file times: {0}")]
41 ModifyError(#[source] io::Error),
42 #[error("error writing file: {0}")]
43 WriteError(#[source] io::Error),
44}
45
46#[derive(Debug, Error)]
47#[cfg(feature = "write")]
48pub enum CheckpointReadError {
49 #[error("error reading checkpoint header: {0}")]
50 Header(#[from] CheckpointHeaderError),
51 #[error("error reading checkpoint content: {0}")]
52 Content(#[from] CheckpointContentError),
53}
54
55#[derive(Debug, Error)]
56#[cfg(feature = "write")]
57pub enum CheckpointCheckError {
58 #[error("error opening storage: {0}")]
59 StorageOpenError(#[source] anyhow::Error),
60 #[error("block hash not found at height {0}")]
61 BlockNotFound(u32),
62 #[error("error reading ledger: {0}")]
63 ReadLedger(#[source] anyhow::Error),
64 #[error("checkpoint height ({0}) is greater than ledger height ({1})")]
65 HeightMismatch(u32, u32),
66 #[error("checkpoint hash ({1}) does not match ledger hash ({2}) at height {0}")]
67 HashMismatch(u32, String, String),
68}
69
70#[derive(Debug, Error)]
71#[cfg(feature = "write")]
72pub enum CheckpointRewindError {
73 #[error("error opening storage: {0}")]
74 OpenLedger(#[source] anyhow::Error),
75 #[error("error reading ledger: {0}")]
76 ReadLedger(#[source] anyhow::Error),
77 #[error("error checking checkpoint: {0}")]
78 Check(#[from] CheckpointCheckError),
79 #[error("error removing documents: {0}")]
80 RemoveDocument(#[source] anyhow::Error),
81 #[error("no commiteee found for height {0}. ledger likely corrupted")]
82 MissingCommittee(u32),
83}
84
85#[derive(Debug, Error)]
86pub enum CheckpointHeaderError {
87 #[error("error opening file: {0}")]
88 FileError(#[source] io::Error),
89 #[error("error reading bytes: {0}")]
90 ReadError(#[source] io::Error),
91 #[error("no block found at height {0}")]
92 BlockNotFound(u32),
93 #[error("no genesis block hash found in storage")]
94 HashlessGenesis,
95 #[error("no block header found for block hash {1} at height {0}")]
96 BlockMissingHeader(u32, String),
97
98 #[error("error opening storage: {0}")]
99 #[cfg(feature = "write")]
100 OpenLedger(#[source] anyhow::Error),
101 #[error("error reading ledger: {0}")]
102 #[cfg(feature = "write")]
103 ReadLedger(#[source] anyhow::Error),
104}
105
106#[derive(Debug, Error)]
107#[cfg(feature = "write")]
108pub enum CheckpointContentError {
109 #[error("error opening storage: {0}")]
110 OpenLedger(#[source] anyhow::Error),
111 #[error("error reading ledger: {0}")]
112 ReadLedger(#[source] anyhow::Error),
113 #[error("no block found at height {0}")]
114 BlockNotFound(u32),
115 #[error("no genesis block hash found in storage")]
116 HashlessGenesis,
117 #[error("no block header found for block hash {1} at height {0}")]
118 BlockMissingHeader(u32, String),
119}