pub struct BucketCfg {
pub rate: u32,
pub per: Duration,
pub burst: u32,
}Expand description
Token-bucket configuration for one limit bucket.
A bucket starts full with burst tokens. It gains rate tokens every per, continuously (not
in steps), and never holds more than burst. One call spends one token. So a quiet client may
send burst calls at once, and a busy one is held to rate calls per per.
In a limits file the three keys are written as rate = 10, per = "1s", burst = 3. The
per value is an integer followed by ms, s, m, h or d (see BrokerLimits::from_toml_str).
§Examples
use std::time::Duration;
use brokapi_runtime::BucketCfg;
let cfg = BucketCfg { rate: 10, per: Duration::from_secs(1), burst: 3 };
assert_eq!(cfg.burst, 3);Fields§
§rate: u32Tokens added per per. Must be greater than zero for the bucket to ever refill.
per: DurationThe period in which rate tokens are added.
burst: u32Bucket capacity, and the number of tokens it holds at start.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for BucketCfg
impl<'de> Deserialize<'de> for BucketCfg
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for BucketCfg
Auto Trait Implementations§
impl Freeze for BucketCfg
impl RefUnwindSafe for BucketCfg
impl Send for BucketCfg
impl Sync for BucketCfg
impl Unpin for BucketCfg
impl UnsafeUnpin for BucketCfg
impl UnwindSafe for BucketCfg
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more