Trait orml_traits::rate_limit::RateLimiter

source ·
pub trait RateLimiter {
    type RateLimiterId: Parameter + Member + Copy;

    // Required methods
    fn is_whitelist(limiter_id: Self::RateLimiterId, key: impl Encode) -> bool;
    fn can_consume(
        limiter_id: Self::RateLimiterId,
        limit_key: impl Encode,
        value: u128
    ) -> Result<(), RateLimiterError>;
    fn consume(
        limiter_id: Self::RateLimiterId,
        limit_key: impl Encode,
        value: u128
    );

    // Provided method
    fn try_consume(
        limiter_id: Self::RateLimiterId,
        limit_key: impl Encode + Clone,
        value: u128,
        whitelist_check: Option<impl Encode>
    ) -> Result<(), RateLimiterError> { ... }
}
Expand description

Rate Limiter

Required Associated Types§

source

type RateLimiterId: Parameter + Member + Copy

The type for the rate limiter.

Required Methods§

source

fn is_whitelist(limiter_id: Self::RateLimiterId, key: impl Encode) -> bool

Check whether the rate limiter of can be bypassed according to the key.

source

fn can_consume( limiter_id: Self::RateLimiterId, limit_key: impl Encode, value: u128 ) -> Result<(), RateLimiterError>

Check whether the value can be consumed under the limit of limit_key.

source

fn consume(limiter_id: Self::RateLimiterId, limit_key: impl Encode, value: u128)

The handler function to consume quota.

Provided Methods§

source

fn try_consume( limiter_id: Self::RateLimiterId, limit_key: impl Encode + Clone, value: u128, whitelist_check: Option<impl Encode> ) -> Result<(), RateLimiterError>

Try consume quota.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl RateLimiter for ()

Implementors§