21 lines
516 B
C++
21 lines
516 B
C++
#pragma once
|
|
|
|
#include <chrono>
|
|
#include <utility>
|
|
|
|
struct RateLimit {
|
|
virtual ~RateLimit();
|
|
auto virtual query(size_t want_to_send) -> std::pair<std::chrono::milliseconds, size_t> = 0;
|
|
};
|
|
|
|
struct Rfc1459RateLimit final : RateLimit
|
|
{
|
|
using clock = std::chrono::steady_clock;
|
|
|
|
std::chrono::milliseconds cost_ {2'000};
|
|
std::chrono::milliseconds allowance_ {10'000};
|
|
clock::time_point horizon_{};
|
|
|
|
auto query(size_t want_to_send) -> std::pair<std::chrono::milliseconds, size_t> override;
|
|
};
|