TextBudget

Struct TextBudget 

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

One connection’s allowance for the things it types.

The same leaky bucket the reference server puts in front of TextMessage, and it is worth having here rather than in the shard: a flood refused at the socket never crosses a mailbox nor wakes a shard task.

The clock is passed in for the same reason VoiceBudget does it: a test that has to sleep to observe a rate limit is a test that will be flaky.

REF: references/mumble/src/murmur/Messages.cpp : the RATELIMIT macro returns from msgTextMessage without answering the client.

Implementations§

Source§

impl TextBudget

Source

pub fn new(now: Instant) -> TextBudget

Source

pub fn allow(&mut self, now: Instant) -> bool

Take one message’s worth of budget. false means drop it.

Trait Implementations§

Source§

impl Debug for TextBudget

Source§

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

Formats the value using the given formatter. 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, 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> Same for T

Source§

type Output = T

Should always be Self
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.