agcodex_persistence/
error.rs1use std::io;
4use thiserror::Error;
5use uuid::Uuid;
6
7pub type Result<T> = std::result::Result<T, PersistenceError>;
8
9#[derive(Error, Debug)]
10pub enum PersistenceError {
11 #[error("I/O error: {0}")]
13 Io(#[from] io::Error),
14
15 #[error("Bincode encoding error: {0}")]
17 BincodeEncode(#[from] bincode::error::EncodeError),
18
19 #[error("Bincode decoding error: {0}")]
21 BincodeDecode(#[from] bincode::error::DecodeError),
22
23 #[error("MessagePack serialization error: {0}")]
25 MessagePack(#[from] rmp_serde::encode::Error),
26
27 #[error("MessagePack deserialization error: {0}")]
29 MessagePackDecode(#[from] rmp_serde::decode::Error),
30
31 #[error("Compression error: {0}")]
33 Compression(String),
34
35 #[error("Session not found: {0}")]
37 SessionNotFound(Uuid),
38
39 #[error("Invalid file format: expected AGCX magic bytes")]
41 InvalidMagic,
42
43 #[error("Unsupported format version: {0} (expected {1})")]
45 UnsupportedVersion(u16, u16),
46
47 #[error("Corrupt session data: {0}")]
49 CorruptData(String),
50
51 #[error("Invalid format: {0}")]
53 InvalidFormat(String),
54
55 #[error("Incompatible version: expected {expected}, got {actual}")]
57 IncompatibleVersion { expected: u16, actual: u16 },
58
59 #[error("Storage path does not exist: {0}")]
61 PathNotFound(String),
62
63 #[error("Permission denied: {0}")]
65 PermissionDenied(String),
66
67 #[error("Session already exists: {0}")]
69 SessionAlreadyExists(Uuid),
70
71 #[error("Invalid checkpoint: {0}")]
73 InvalidCheckpoint(String),
74
75 #[error("Migration required from version {0} to {1}")]
77 MigrationRequired(u16, u16),
78
79 #[error("Migration failed: {0}")]
81 MigrationFailed(String),
82
83 #[error("Failed to acquire lock: {0}")]
85 LockFailed(String),
86
87 #[error("Memory mapping failed: {0}")]
89 MemoryMapFailed(String),
90
91 #[error("Session index corrupted: {0}")]
93 IndexCorrupted(String),
94
95 #[error("Auto-save failed: {0}")]
97 AutoSaveFailed(String),
98
99 #[error("JSON error: {0}")]
101 Json(#[from] serde_json::Error),
102}