use serde::{Deserialize, Serialize};
use super::token_bucket;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct RateLimiter {
#[serde(rename = "banwidth")]
pub bandwidth: Option<token_bucket::TokenBucket>,
#[serde(rename = "ops")]
pub ops: Option<token_bucket::TokenBucket>,
}
impl RateLimiter {
pub fn new(bandwidth: token_bucket::TokenBucket, ops: token_bucket::TokenBucket) -> Self {
Self {
bandwidth: Some(bandwidth),
ops: Some(ops),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct RateLimiterSet {
#[serde(rename = "in_rate_limiter", skip_serializing_if = "Option::is_none")]
pub in_rate_limiter: Option<RateLimiter>,
#[serde(rename = "out_rate_limiter", skip_serializing_if = "Option::is_none")]
pub out_rate_limiter: Option<RateLimiter>,
}