Skip to main content

BudgetTracker

Struct BudgetTracker 

Source
pub struct BudgetTracker { /* private fields */ }
Expand description

In-memory per-task budget tracker.

Reconstructed from WAL events at bootstrap via BudgetTracker::allocate and BudgetTracker::consume calls. The dispatch loop updates the tracker each tick as WorkerResults arrive.

Implementations§

Source§

impl BudgetTracker

Source

pub fn new() -> Self

Creates an empty tracker.

Source

pub fn allocate( &mut self, task_id: TaskId, dimension: BudgetDimension, limit: u64, )

Registers a budget allocation for a task/dimension pair.

If an allocation already exists for this pair, it is replaced (re-allocation).

Source

pub fn consume( &mut self, task_id: TaskId, dimension: BudgetDimension, amount: u64, ) -> ConsumeResult

Records consumption and returns whether the budget was exhausted by this call.

No-ops if no allocation exists for the (task, dimension) pair.

Source

pub fn replenish( &mut self, task_id: TaskId, dimension: BudgetDimension, new_limit: u64, )

Replenishes a budget: sets new limit and clears the exhausted flag.

Source

pub fn is_exhausted(&self, task_id: TaskId, dimension: BudgetDimension) -> bool

Returns true if the given dimension budget is exhausted for this task.

Source

pub fn is_any_exhausted(&self, task_id: TaskId) -> bool

Returns true if ANY dimension budget is exhausted for this task.

Source

pub fn remaining( &self, task_id: TaskId, dimension: BudgetDimension, ) -> Option<u64>

Returns the remaining budget for a (task, dimension) pair.

Returns None if no allocation exists.

Source

pub fn threshold_pct( &self, task_id: TaskId, dimension: BudgetDimension, ) -> Option<u8>

Returns consumed amount as a percentage of the limit (0-100).

Returns None if no allocation exists.

Source

pub fn get( &self, task_id: TaskId, dimension: BudgetDimension, ) -> Option<&BudgetState>

Returns the state for a (task, dimension) pair.

Source

pub fn gc_task(&mut self, task_id: TaskId)

Removes all budget state for a fully-terminal task.

Called by the dispatch loop after a task reaches terminal state. Safe to call because terminal tasks no longer dispatch runs that would consume budget or check exhaustion.

Trait Implementations§

Source§

impl Debug for BudgetTracker

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for BudgetTracker

Source§

fn default() -> BudgetTracker

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more