pub struct JsonDecodeAttempt<'a, R, Q>where
Q: ResourceQuantity,{ /* private fields */ }json only.Expand description
I/O accounting and transactional value admission for one JSON decode.
Dropping an attempt rolls back JSON value accounting. Raw and normalized input charges remain committed, including while unwinding from a panic.
§Type Parameters
R- Caller-defined resource identity retained by limits and errors.Q- Exact unsigned quantity used for measurements and accounting.
§Examples
use qubit_budget::json::JsonDecodeLimits;
use qubit_budget::json::JsonDecodeSession;
use qubit_budget::json::JsonMeasurement;
let limits = JsonDecodeLimits::builder().max_nodes(1_usize).build();
let mut session = JsonDecodeSession::from_limits(limits);
let mut attempt = session.begin_value();
attempt.try_admit(JsonMeasurement::Null { depth: 1 }).expect("null should fit");
attempt.commit()?;Implementations§
Source§impl<'a, R, Q> JsonDecodeAttempt<'a, R, Q>where
R: Clone,
Q: ResourceQuantity,
impl<'a, R, Q> JsonDecodeAttempt<'a, R, Q>where
R: Clone,
Q: ResourceQuantity,
Sourcepub fn try_consume_input_bytes(
&mut self,
amount: usize,
) -> Result<(), MeasuredBudgetError<R, Q>>
pub fn try_consume_input_bytes( &mut self, amount: usize, ) -> Result<(), MeasuredBudgetError<R, Q>>
Charges raw input bytes immediately when that budget is configured.
Returns a quantity-conversion or budget error without changing the configured input budget on failure. An absent input budget is ignored.
§Parameters
amount- Number of raw input bytes to charge immediately.
§Returns
Ok(()) when the operation completes successfully.
§Errors
Returns MeasuredBudgetError when a native measurement cannot fit Q
or a configured limit rejects it.
Sourcepub fn try_consume_normalized_input_bytes(
&mut self,
amount: usize,
) -> Result<(), MeasuredBudgetError<R, Q>>
pub fn try_consume_normalized_input_bytes( &mut self, amount: usize, ) -> Result<(), MeasuredBudgetError<R, Q>>
Charges normalized input bytes immediately when that budget is set.
Returns a quantity-conversion or budget error without changing the configured normalized budget on failure. An absent budget is ignored.
§Parameters
amount- Number of normalized input bytes to charge immediately.
§Returns
Ok(()) when the operation completes successfully.
§Errors
Returns MeasuredBudgetError when a native measurement cannot fit Q
or a configured limit rejects it.
Sourcepub fn try_admit(
&mut self,
measurement: JsonMeasurement,
) -> Result<(), MeasuredBudgetError<R, Q>>
pub fn try_admit( &mut self, measurement: JsonMeasurement, ) -> Result<(), MeasuredBudgetError<R, Q>>
Stages one JSON measurement for publication by Self::commit.
Returns the transaction’s conversion or value-limit error. A failure leaves this attempt’s working value state and all I/O charges unchanged, and poisons later value admissions and commit. I/O failures alone do not poison the value transaction.
§Parameters
measurement- Native JSON measurement to convert or admit.
§Returns
Ok(()) when the operation completes successfully.
§Errors
Returns MeasuredBudgetError when a native measurement cannot fit Q
or a configured limit rejects it.
Sourcepub fn input_budget(&self) -> Option<&ResourceBudget<R, Q>>
pub fn input_budget(&self) -> Option<&ResourceBudget<R, Q>>
Returns the raw input budget while the attempt exclusively owns it.
§Returns
Returns the raw input budget while the attempt exclusively owns it.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub fn normalized_input_budget(&self) -> Option<&ResourceBudget<R, Q>>
pub fn normalized_input_budget(&self) -> Option<&ResourceBudget<R, Q>>
Returns the normalized input budget while the attempt owns it.
§Returns
Returns the normalized input budget while the attempt owns it.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub fn used_nodes(&self) -> Option<Q>
pub fn used_nodes(&self) -> Option<Q>
Returns staged node usage when the node limit is configured.
§Returns
Returns staged node usage when the node limit is configured.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub const fn remaining_nodes(&self) -> Option<Q>
pub const fn remaining_nodes(&self) -> Option<Q>
Returns staged remaining node capacity when the node limit is set.
§Returns
Returns staged remaining node capacity when the node limit is set.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub fn used_payload_bytes(&self) -> Option<Q>
pub fn used_payload_bytes(&self) -> Option<Q>
Returns staged payload usage when the payload limit is configured.
§Returns
Returns staged payload usage when the payload limit is configured.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub const fn remaining_payload_bytes(&self) -> Option<Q>
pub const fn remaining_payload_bytes(&self) -> Option<Q>
Returns staged remaining payload capacity when the payload limit is set.
§Returns
Returns staged remaining payload capacity when the payload limit is set.
None indicates that the corresponding limit or budget dimension is
unconfigured.
Sourcepub fn value_transaction_mut(&mut self) -> &mut JsonValueTransaction<'a, R, Q>
pub fn value_transaction_mut(&mut self) -> &mut JsonValueTransaction<'a, R, Q>
Returns the mutable transaction that holds this attempt’s value state.
§Returns
Returns the mutable transaction that holds this attempt’s value state.