#pragma once #include #include struct RateLimit { virtual ~RateLimit(); auto virtual query(size_t want_to_send) -> std::pair = 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 override; };