Struct ratelimit::Ratelimit [] [src]

pub struct Ratelimit {
    // some fields omitted
}

Methods

impl Ratelimit
[src]

fn new(capacity: usize, start: u64, interval: u64, quantum: usize) -> Option<Ratelimit>

create a new ratelimit instance

Example


let mut r = Ratelimit::new(0, 0, 1, 1).unwrap();

fn run(&mut self)

run the ratelimiter

Example


let mut r = Ratelimit::new(1, 0, 1, 1).unwrap();

let sender = r.clone_sender();
let _ = sender.try_send(());

r.run(); // invoke in a tight-loop in its own thread

fn clone_sender(&mut self) -> SyncSender<()>

return clone of SyncSender for client use

Example


let mut r = Ratelimit::new(1, 0, 1, 1).unwrap();

let sender = r.clone_sender();

match sender.try_send(()) {
    Ok(_) => {
        println!("not limited");
    },
    Err(_) => {
        println!("was limited");
    },
}

fn block(&mut self, count: usize)