#pragma once #include #include namespace drogon { class FixedWindowRateLimiter : public RateLimiter { public: FixedWindowRateLimiter(size_t capacity, std::chrono::duration timeUnit); bool isAllowed() override; ~FixedWindowRateLimiter() noexcept override = default; private: size_t capacity_; size_t currentRequests_{0}; std::chrono::steady_clock::time_point lastTime_; std::chrono::duration timeUnit_; }; } // namespace drogon