Skip to main content

LimitBackend

Trait LimitBackend 

pub trait LimitBackend:
    Send
    + Sync
    + Debug {
    // Required methods
    fn define(&self, name: &str, spec: LimitSpec);
    fn ticket(&self) -> u64;
    fn acquire_in(
        &self,
        name: &str,
        ticket: u64,
        priority: &Priority,
        now_ms: u64,
        waker: Option<&Waker>,
    ) -> Acquire;
    fn release(&self, name: &str, ticket: u64);
    fn in_use(&self, name: &str) -> u32;

    // Provided methods
    fn acquire(
        &self,
        name: &str,
        ticket: u64,
        now_ms: u64,
        waker: Option<&Waker>,
    ) -> Acquire { ... }
    fn waiting(&self, _name: &str) -> usize { ... }
    fn list(&self) -> Vec<(String, LimitSpec)> { ... }
}
Expand description

Where limits live.

Required Methods§

fn define(&self, name: &str, spec: LimitSpec)

fn ticket(&self) -> u64

A new ticket for one attempt’s permit.

fn acquire_in( &self, name: &str, ticket: u64, priority: &Priority, now_ms: u64, waker: Option<&Waker>, ) -> Acquire

Asks for the permit of ticket, queued at priority the first time it is asked for. Idempotent: asking again for a granted ticket answers Granted.

fn release(&self, name: &str, ticket: u64)

Returns a granted permit, or withdraws a queued ticket.

fn in_use(&self, name: &str) -> u32

Permits currently held (for checks and metrics).

Provided Methods§

fn acquire( &self, name: &str, ticket: u64, now_ms: u64, waker: Option<&Waker>, ) -> Acquire

acquire_in at the default priority.

fn waiting(&self, _name: &str) -> usize

Steps waiting for a permit here, where the backend knows (metrics).

fn list(&self) -> Vec<(String, LimitSpec)>

The limits defined here, by name, where the backend knows (fusee limits, the UI).

Implementors§