#include #include "FixedWindowRateLimiter.h" #include "SlidingWindowRateLimiter.h" #include "TokenBucketRateLimiter.h" using namespace drogon; RateLimiterPtr RateLimiter::newRateLimiter( RateLimiterType type, size_t capacity, std::chrono::duration timeUnit) { switch (type) { case RateLimiterType::kFixedWindow: return std::make_shared(capacity, timeUnit); case RateLimiterType::kSlidingWindow: return std::make_shared(capacity, timeUnit); case RateLimiterType::kTokenBucket: return std::make_shared(capacity, timeUnit); } return std::make_shared(capacity, timeUnit); }