XU XUv0.8.8
中文

API

#rate

import: #rate

counts: 1 fns, 4 methods, 1 types, 0 consts, 0 ifaces

Token-bucket rate limiter (single task; S6 — no `&mut` across `xu`). mut lim := rate.new(100, 100) // 100 events/s, burst 100 if lim.allow {... } For per-peer limits keep one Limiter per peer on the coordinator task.

struct Limiter

XuAPI
pub struct Limiter {

}

Purpose

Token-bucket rate limiter (single task; S6 — no `&mut` across `xu`). mut lim := rate.new(100, 100) // 100 events/s, burst 100 if lim.allow {... } For per-peer limits keep one Limiter per peer on the coordinator task.

Parameters

none

new

XuAPI
pub fn new(events_per_sec int, burst int) Limiter

Purpose

new(events_per_sec, burst). burst must be >= 1.

Parameters

events_per_sec int
events_per_sec (int)
burst int
burst (int)

Returns

Limiter — a value of this type

(&mut Limiter) allow

XuAPI
pub fn (l &mut Limiter) allow() bool

Purpose

allow consumes one token if available.

Parameters

l &mut Limiter
receiver &mut Limiter (exclusive borrow)

Returns

bool — true or false

(&mut Limiter) allow_n

XuAPI
pub fn (l &mut Limiter) allow_n(n int) bool

Purpose

allow_n consumes n tokens or none (all-or-nothing).

Parameters

l &mut Limiter
receiver &mut Limiter (exclusive borrow)
n int
count, length, or limit (int)

Returns

bool — true or false

(Limiter) available

XuAPI
pub fn (l Limiter) available() int

Purpose

Call `available` on `Limiter`.

Parameters

l Limiter
receiver Limiter (value receiver)

Returns

int — a value of this type

(Limiter) sleep_for_hint

XuAPI
pub fn (l Limiter) sleep_for_hint() int

Purpose

sleep_for_hint returns a rough ns until one token exists (0 if ready).

Parameters

l Limiter
receiver Limiter (value receiver)

Returns

int — a value of this type