use super::space::SpaceId;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ResourceDimension {
InputBytes,
DecompressedBytes,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ResourceFailure {
BudgetExceeded,
AllocationFailed,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum LimitScope {
Global,
PerExpand,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct SourceLocation {
pub space: SpaceId,
pub offset: u64,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ErrorContext {
pub operation: &'static str,
pub location: Option<SourceLocation>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ResourceLimit {
pub dimension: ResourceDimension,
pub reason: ResourceFailure,
pub scope: LimitScope,
pub limit: u64,
pub used: u64,
pub additional: u64,
pub context: ErrorContext,
}