pub struct ResourceTracker {
current_depth: usize,
max_depth_seen: usize,
anchor_count: usize,
bytes_processed: usize,
alias_depth: usize,
complexity_score: usize,
collection_items: usize,
total_alias_nodes: usize,
}Expand description
Tracks resource usage during parsing
Fields§
§current_depth: usize§max_depth_seen: usize§anchor_count: usize§bytes_processed: usize§alias_depth: usize§complexity_score: usize§collection_items: usize§total_alias_nodes: usizeCumulative count of nodes materialized via alias expansion in the
current document. Guards the billion-laughs gap where
complexity_score alone trips only after substantial allocation.
Implementations§
Source§impl ResourceTracker
impl ResourceTracker
Sourcepub fn check_depth(&mut self, limits: &Limits, depth: usize) -> Result<()>
pub fn check_depth(&mut self, limits: &Limits, depth: usize) -> Result<()>
Checks if depth limit is exceeded
Sourcepub fn add_anchor(&mut self, limits: &Limits) -> Result<()>
pub fn add_anchor(&mut self, limits: &Limits) -> Result<()>
Increments and checks anchor count
Sourcepub fn add_bytes(&mut self, limits: &Limits, bytes: usize) -> Result<()>
pub fn add_bytes(&mut self, limits: &Limits, bytes: usize) -> Result<()>
Tracks bytes processed
Sourcepub fn check_string_length(&self, limits: &Limits, length: usize) -> Result<()>
pub fn check_string_length(&self, limits: &Limits, length: usize) -> Result<()>
Checks string length
Sourcepub fn enter_alias(&mut self, limits: &Limits) -> Result<()>
pub fn enter_alias(&mut self, limits: &Limits) -> Result<()>
Tracks alias expansion depth
Sourcepub fn exit_alias(&mut self)
pub fn exit_alias(&mut self)
Exits alias expansion
Sourcepub fn add_collection_item(&mut self, limits: &Limits) -> Result<()>
pub fn add_collection_item(&mut self, limits: &Limits) -> Result<()>
Tracks collection items
Sourcepub fn add_complexity(&mut self, limits: &Limits, score: usize) -> Result<()>
pub fn add_complexity(&mut self, limits: &Limits, score: usize) -> Result<()>
Adds to complexity score
Sourcepub fn add_alias_materialization(
&mut self,
limits: &Limits,
nodes: usize,
) -> Result<()>
pub fn add_alias_materialization( &mut self, limits: &Limits, nodes: usize, ) -> Result<()>
Charges an alias-expansion materialization against the cumulative node-count budget. Call this before cloning the anchored value so the check fires before memory is committed.
nodes is the node count of the resolved value (e.g.
calculate_value_complexity).
§Errors
Returns an error if the cumulative materialization would exceed
limits.max_total_alias_nodes.
Sourcepub fn stats(&self) -> ResourceStats
pub fn stats(&self) -> ResourceStats
Gets current statistics
Trait Implementations§
Source§impl Clone for ResourceTracker
impl Clone for ResourceTracker
Source§fn clone(&self) -> ResourceTracker
fn clone(&self) -> ResourceTracker
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more