metaboss 0.49.0

The Metaplex NFT-standard Swiss Army Knife tool.
Documentation
use ratelimit::Handle;
use std::{thread, time::Duration};

use crate::constants::*;

pub fn create_default_rate_limiter() -> Handle {
    let num_cpus = num_cpus::get();

    let mut limiter = ratelimit::Builder::new()
        .capacity(num_cpus as u32)
        .quantum(1)
        .interval(Duration::new(0, *RPC_DELAY_NS.read().unwrap()))
        .build();

    let handle = limiter.make_handle();
    thread::spawn(move || {
        limiter.run();
    });
    handle
}

pub fn create_rate_limiter(delay: u32) -> Handle {
    let mut limiter = ratelimit::Builder::new()
        .capacity(1000)
        .quantum(1)
        .interval(Duration::new(0, delay))
        .build();

    let handle = limiter.make_handle();
    thread::spawn(move || {
        limiter.run();
    });
    handle
}

pub fn create_rate_limiter_with_capacity(capacity: u32, delay: u32) -> Handle {
    let mut limiter = ratelimit::Builder::new()
        .capacity(capacity)
        .quantum(1)
        .interval(Duration::new(0, delay))
        .build();

    let handle = limiter.make_handle();
    thread::spawn(move || {
        limiter.run();
    });
    handle
}