aegis_resource/
error.rs

1//! Error types for resource management.
2
3use thiserror::Error;
4
5/// Errors related to resource management.
6#[derive(Debug, Error)]
7pub enum ResourceError {
8    /// Memory allocation failed.
9    #[error("Memory allocation failed: requested {requested} bytes, available {available} bytes")]
10    MemoryAllocationFailed {
11        /// Requested memory in bytes.
12        requested: usize,
13        /// Available memory in bytes.
14        available: usize,
15    },
16
17    /// Memory limit exceeded.
18    #[error("Memory limit exceeded: {used} bytes used, limit is {limit} bytes")]
19    MemoryLimitExceeded {
20        /// Memory used in bytes.
21        used: usize,
22        /// Memory limit in bytes.
23        limit: usize,
24    },
25
26    /// Fuel exhausted.
27    #[error("Fuel exhausted: consumed {consumed} units, limit was {limit} units")]
28    FuelExhausted {
29        /// Fuel consumed.
30        consumed: u64,
31        /// Fuel limit.
32        limit: u64,
33    },
34
35    /// Refuel request denied.
36    #[error("Refuel denied: {reason}")]
37    RefuelDenied {
38        /// Reason for denial.
39        reason: String,
40    },
41
42    /// Execution timeout.
43    #[error("Execution timeout after {elapsed:?}, limit was {limit:?}")]
44    Timeout {
45        /// Time elapsed.
46        elapsed: std::time::Duration,
47        /// Time limit.
48        limit: std::time::Duration,
49    },
50
51    /// Stack overflow.
52    #[error("Stack overflow")]
53    StackOverflow,
54
55    /// Table size exceeded.
56    #[error("Table size exceeded: {current} elements, limit is {limit} elements")]
57    TableSizeExceeded {
58        /// Current table size.
59        current: u32,
60        /// Table size limit.
61        limit: u32,
62    },
63
64    /// Epochs are disabled.
65    #[error("Epoch-based interruption is disabled in the engine configuration")]
66    EpochsDisabled,
67
68    /// Fuel is disabled.
69    #[error("Fuel consumption is disabled in the engine configuration")]
70    FuelDisabled,
71
72    /// Failed to spawn thread.
73    #[error("Failed to spawn thread: {0}")]
74    ThreadSpawnFailed(String),
75
76    /// Configuration error.
77    #[error("Invalid resource configuration: {0}")]
78    InvalidConfig(String),
79}
80
81/// Result type for resource operations.
82pub type ResourceResult<T> = std::result::Result<T, ResourceError>;