RateLimiter
Object Hierarchy:
Description:
public class RateLimiter : Object
Thread-safe token-bucket rate limiter.
RateLimiter is useful for protecting downstream services or local resources from request spikes. It provides both non-blocking
(allow/allowN) and blocking (wait/waitN) acquisition APIs.
Example:
var created = RateLimiter.of (100);
if (created.isError ()) {
return;
}
var limiter = created.unwrap ();
var configured = limiter.withBurst (200);
if (configured.isError ()) {
return;
}
if (limiter.allow ()) {
send_request ();
}
Content:
Static methods:
Methods:
- public bool allow ()
Tries to acquire one permit immediately.
- public Result<bool,Error> allowN (int permits)
Tries to acquire n permits immediately.
- public int availableTokens ()
Returns currently available permits (floored).
- public int64 reserve ()
Returns estimated wait milliseconds until one permit becomes
available.
- public void reset ()
Resets current tokens to burst capacity.
- public Result<bool,Error> setRate (int permitsPerSecond)
Updates rate.
- public void wait ()
Waits until one permit is available and acquires it.
- public Result<bool,Error> waitN (int permits)
Waits until n permits are available and acquires them.
- public Result<RateLimiter,Error> withBurst (int permits)
Sets burst capacity.
Inherited Members:
All known members inherited from class GLib.Object
- @get
- @new
- @ref
- @set
- add_toggle_ref
- add_weak_pointer
- bind_property
- connect
- constructed
- disconnect
- dispose
- dup_data
- dup_qdata
- force_floating
- freeze_notify
- get_class
- get_data
- get_property
- get_qdata
- get_type
- getv
- interface_find_property
- interface_install_property
- interface_list_properties
- is_floating
- new_valist
- new_with_properties
- newv
- notify
- notify_property
- ref_count
- ref_sink
- remove_toggle_ref
- remove_weak_pointer
- replace_data
- replace_qdata
- set_data
- set_data_full
- set_property
- set_qdata
- set_qdata_full
- set_valist
- setv
- steal_data
- steal_qdata
- thaw_notify
- unref
- watch_closure
- weak_ref
- weak_unref