Skip to main content

RateLimiterSet

Struct RateLimiterSet 

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

Per-class rate limiter set (BEP 40 / libtorrent parity).

Maintains separate upload/download buckets for TCP and uTP, plus global upload/download buckets. Uses check-before-consume pattern to avoid partial consumption when one bucket has capacity but another doesn’t.

Implementations§

Source§

impl RateLimiterSet

Source

pub fn new( tcp_upload_rate: u64, tcp_download_rate: u64, utp_upload_rate: u64, utp_download_rate: u64, global_upload_rate: u64, global_download_rate: u64, ) -> Self

Create a new rate limiter set. Rate of 0 = unlimited.

Source

pub fn refill(&mut self, elapsed: Duration)

Refill all buckets proportional to elapsed time.

Source

pub fn try_consume_upload( &mut self, amount: u64, transport: PeerTransport, ) -> bool

Try to consume upload tokens for the given transport class.

Checks both the class bucket and global bucket before consuming either, to avoid partial consumption without refund.

Source

pub fn try_consume_download( &mut self, amount: u64, transport: PeerTransport, ) -> bool

Try to consume download tokens for the given transport class.

Source

pub fn set_rates( &mut self, tcp_upload: u64, tcp_download: u64, utp_upload: u64, utp_download: u64, global_upload: u64, global_download: u64, )

Update per-class rates at runtime (e.g., from apply_settings).

Source

pub fn apply_mixed_mode( &mut self, algorithm: MixedModeAlgorithm, tcp_peers: usize, utp_peers: usize, global_upload_rate: u64, )

Apply mixed-mode bandwidth allocation based on peer transport composition. Only adjusts upload — download is not throttled by transport type.

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> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more