diff --git a/nano/lib/rate_limiting.cpp b/nano/lib/rate_limiting.cpp index de6d0fde5..268e8b5e9 100644 --- a/nano/lib/rate_limiting.cpp +++ b/nano/lib/rate_limiting.cpp @@ -4,6 +4,10 @@ #include +/* + * token_bucket + */ + nano::rate::token_bucket::token_bucket (std::size_t max_token_count_a, std::size_t refill_rate_a) { reset (max_token_count_a, refill_rate_a); @@ -62,3 +66,22 @@ void nano::rate::token_bucket::reset (std::size_t max_token_count_a, std::size_t refill_rate = refill_rate_a; last_refill = std::chrono::steady_clock::now (); } + +/* + * rate_limiter + */ + +nano::rate_limiter::rate_limiter (std::size_t limit_a, double burst_ratio_a) : + bucket (static_cast (limit_a * burst_ratio_a), limit_a) +{ +} + +bool nano::rate_limiter::should_pass (std::size_t message_size_a) +{ + return bucket.try_consume (nano::narrow_cast (message_size_a)); +} + +void nano::rate_limiter::reset (std::size_t limit_a, double burst_ratio_a) +{ + bucket.reset (static_cast (limit_a * burst_ratio_a), limit_a); +} \ No newline at end of file diff --git a/nano/lib/rate_limiting.hpp b/nano/lib/rate_limiting.hpp index 33adb52e9..f027d7083 100644 --- a/nano/lib/rate_limiting.hpp +++ b/nano/lib/rate_limiting.hpp @@ -59,3 +59,19 @@ private: static std::size_t constexpr unlimited_rate_sentinel{ static_cast (1e9) }; }; } + +namespace nano +{ +class rate_limiter final +{ +public: + // initialize with limit 0 = unbounded + rate_limiter (std::size_t limit, double burst_ratio); + + bool should_pass (std::size_t buffer_size); + void reset (std::size_t limit, double burst_ratio); + +private: + nano::rate::token_bucket bucket; +}; +} \ No newline at end of file diff --git a/nano/node/bandwidth_limiter.cpp b/nano/node/bandwidth_limiter.cpp index 347fa4b2e..14a79ecb1 100644 --- a/nano/node/bandwidth_limiter.cpp +++ b/nano/node/bandwidth_limiter.cpp @@ -1,25 +1,6 @@ #include #include -/* - * rate_limiter - */ - -nano::rate_limiter::rate_limiter (std::size_t limit_a, double burst_ratio_a) : - bucket (static_cast (limit_a * burst_ratio_a), limit_a) -{ -} - -bool nano::rate_limiter::should_pass (std::size_t message_size_a) -{ - return bucket.try_consume (nano::narrow_cast (message_size_a)); -} - -void nano::rate_limiter::reset (std::size_t limit_a, double burst_ratio_a) -{ - bucket.reset (static_cast (limit_a * burst_ratio_a), limit_a); -} - /* * outbound_bandwidth_limiter */ diff --git a/nano/node/bandwidth_limiter.hpp b/nano/node/bandwidth_limiter.hpp index edd6c328b..6203f1ed9 100644 --- a/nano/node/bandwidth_limiter.hpp +++ b/nano/node/bandwidth_limiter.hpp @@ -21,19 +21,6 @@ nano::bandwidth_limit_type to_bandwidth_limit_type (nano::transport::traffic_typ /** * Class that tracks and manages bandwidth limits for IO operations */ -class rate_limiter final -{ -public: - // initialize with limit 0 = unbounded - rate_limiter (std::size_t limit, double burst_ratio); - - bool should_pass (std::size_t buffer_size); - void reset (std::size_t limit, double burst_ratio); - -private: - nano::rate::token_bucket bucket; -}; - class outbound_bandwidth_limiter final { public: // Config diff --git a/nano/node/bootstrap_ascending/service.hpp b/nano/node/bootstrap_ascending/service.hpp index d82971998..a31461a7f 100644 --- a/nano/node/bootstrap_ascending/service.hpp +++ b/nano/node/bootstrap_ascending/service.hpp @@ -4,8 +4,7 @@ #include #include #include -#include -#include +#include #include #include #include diff --git a/nano/node/local_block_broadcaster.hpp b/nano/node/local_block_broadcaster.hpp index 47a443acf..1583e7d38 100644 --- a/nano/node/local_block_broadcaster.hpp +++ b/nano/node/local_block_broadcaster.hpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include #include