Move to rate_limiting.hpp
This commit is contained in:
parent
07637c8953
commit
87aeef274d
6 changed files with 41 additions and 35 deletions
|
|
@ -4,6 +4,10 @@
|
|||
|
||||
#include <limits>
|
||||
|
||||
/*
|
||||
* 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<std::size_t> (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<unsigned int> (message_size_a));
|
||||
}
|
||||
|
||||
void nano::rate_limiter::reset (std::size_t limit_a, double burst_ratio_a)
|
||||
{
|
||||
bucket.reset (static_cast<std::size_t> (limit_a * burst_ratio_a), limit_a);
|
||||
}
|
||||
|
|
@ -59,3 +59,19 @@ private:
|
|||
static std::size_t constexpr unlimited_rate_sentinel{ static_cast<std::size_t> (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;
|
||||
};
|
||||
}
|
||||
|
|
@ -1,25 +1,6 @@
|
|||
#include <nano/lib/utility.hpp>
|
||||
#include <nano/node/bandwidth_limiter.hpp>
|
||||
|
||||
/*
|
||||
* rate_limiter
|
||||
*/
|
||||
|
||||
nano::rate_limiter::rate_limiter (std::size_t limit_a, double burst_ratio_a) :
|
||||
bucket (static_cast<std::size_t> (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<unsigned int> (message_size_a));
|
||||
}
|
||||
|
||||
void nano::rate_limiter::reset (std::size_t limit_a, double burst_ratio_a)
|
||||
{
|
||||
bucket.reset (static_cast<std::size_t> (limit_a * burst_ratio_a), limit_a);
|
||||
}
|
||||
|
||||
/*
|
||||
* outbound_bandwidth_limiter
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -4,8 +4,7 @@
|
|||
#include <nano/lib/locks.hpp>
|
||||
#include <nano/lib/numbers.hpp>
|
||||
#include <nano/lib/observer_set.hpp>
|
||||
#include <nano/lib/timer.hpp>
|
||||
#include <nano/node/bandwidth_limiter.hpp>
|
||||
#include <nano/lib/rate_limiting.hpp>
|
||||
#include <nano/node/bootstrap/bootstrap_config.hpp>
|
||||
#include <nano/node/bootstrap_ascending/account_sets.hpp>
|
||||
#include <nano/node/bootstrap_ascending/common.hpp>
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
#include <nano/lib/blocks.hpp>
|
||||
#include <nano/lib/locks.hpp>
|
||||
#include <nano/lib/processing_queue.hpp>
|
||||
#include <nano/node/bandwidth_limiter.hpp>
|
||||
#include <nano/lib/rate_limiting.hpp>
|
||||
#include <nano/node/blockprocessor.hpp>
|
||||
#include <nano/node/fwd.hpp>
|
||||
#include <nano/secure/common.hpp>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue