From 6015e21fa0fefd6851313ad238d75690270d12cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Wo=CC=81jcik?= <3044353+pwojcikdev@users.noreply.github.com> Date: Mon, 9 Sep 2024 21:53:52 +0200 Subject: [PATCH] Rework bandwidth limiter config --- nano/node/bandwidth_limiter.cpp | 21 +++++++++++++++++---- nano/node/bandwidth_limiter.hpp | 29 ++++++++++++++++------------- nano/node/node.cpp | 16 +--------------- nano/node/node.hpp | 3 --- 4 files changed, 34 insertions(+), 35 deletions(-) diff --git a/nano/node/bandwidth_limiter.cpp b/nano/node/bandwidth_limiter.cpp index 45730c671..ade752051 100644 --- a/nano/node/bandwidth_limiter.cpp +++ b/nano/node/bandwidth_limiter.cpp @@ -1,14 +1,15 @@ #include #include +#include /* * bandwidth_limiter */ -nano::bandwidth_limiter::bandwidth_limiter (nano::bandwidth_limiter::config config_a) : - config_m{ config_a }, - limiter_generic{ config_m.standard_limit, config_m.standard_burst_ratio }, - limiter_bootstrap{ config_m.bootstrap_limit, config_m.bootstrap_burst_ratio } +nano::bandwidth_limiter::bandwidth_limiter (nano::node_config const & node_config_a) : + config{ node_config_a }, + limiter_generic{ config.generic_limit, config.generic_burst_ratio }, + limiter_bootstrap{ config.bootstrap_limit, config.bootstrap_burst_ratio } { } @@ -38,4 +39,16 @@ void nano::bandwidth_limiter::reset (std::size_t limit, double burst_ratio, nano { auto & limiter = select_limiter (type); limiter.reset (limit, burst_ratio); +} + +/* + * bandwidth_limiter_config + */ + +nano::bandwidth_limiter_config::bandwidth_limiter_config (nano::node_config const & node_config) : + generic_limit{ node_config.bandwidth_limit }, + generic_burst_ratio{ node_config.bandwidth_limit_burst_ratio }, + bootstrap_limit{ node_config.bootstrap_bandwidth_limit }, + bootstrap_burst_ratio{ node_config.bootstrap_bandwidth_burst_ratio } +{ } \ No newline at end of file diff --git a/nano/node/bandwidth_limiter.hpp b/nano/node/bandwidth_limiter.hpp index c0834b31e..1bd9e5833 100644 --- a/nano/node/bandwidth_limiter.hpp +++ b/nano/node/bandwidth_limiter.hpp @@ -1,28 +1,31 @@ #pragma once #include +#include #include namespace nano { +class bandwidth_limiter_config final +{ +public: + explicit bandwidth_limiter_config (nano::node_config const &); + +public: + std::size_t generic_limit; + double generic_burst_ratio; + + std::size_t bootstrap_limit; + double bootstrap_burst_ratio; +}; + /** * Class that tracks and manages bandwidth limits for IO operations */ class bandwidth_limiter final { -public: // Config - struct config - { - // standard - std::size_t standard_limit; - double standard_burst_ratio; - // bootstrap - std::size_t bootstrap_limit; - double bootstrap_burst_ratio; - }; - public: - explicit bandwidth_limiter (config); + explicit bandwidth_limiter (nano::node_config const &); /** * Check whether packet falls withing bandwidth limits and should be allowed @@ -41,7 +44,7 @@ private: nano::rate_limiter & select_limiter (nano::transport::traffic_type type); private: - const config config_m; + bandwidth_limiter_config const config; private: nano::rate_limiter limiter_generic; diff --git a/nano/node/node.cpp b/nano/node/node.cpp index ff3675f76..30a088143 100644 --- a/nano/node/node.cpp +++ b/nano/node/node.cpp @@ -54,20 +54,6 @@ extern unsigned char nano_bootstrap_weights_beta[]; extern std::size_t nano_bootstrap_weights_beta_size; } -/* - * configs - */ - -nano::bandwidth_limiter::config nano::bandwidth_limiter_config (const nano::node_config & config) -{ - bandwidth_limiter::config cfg{}; - cfg.standard_limit = config.bandwidth_limit; - cfg.standard_burst_ratio = config.bandwidth_limit_burst_ratio; - cfg.bootstrap_limit = config.bootstrap_bandwidth_limit; - cfg.bootstrap_burst_ratio = config.bootstrap_bandwidth_burst_ratio; - return cfg; -} - /* * node */ @@ -159,7 +145,7 @@ nano::node::node (std::shared_ptr io_ctx_a, std::filesy wallets_store (*wallets_store_impl), ledger_impl{ std::make_unique (store, stats, network_params.ledger, flags_a.generate_cache, config_a.representative_vote_weight_minimum.number ()) }, ledger{ *ledger_impl }, - outbound_limiter{ bandwidth_limiter_config (config) }, + outbound_limiter{ config }, message_processor_impl{ std::make_unique (config.message_processor, *this) }, message_processor{ *message_processor_impl }, // empty `config.peering_port` means the user made no port choice at all; diff --git a/nano/node/node.hpp b/nano/node/node.hpp index 11a096920..15d6e96e4 100644 --- a/nano/node/node.hpp +++ b/nano/node/node.hpp @@ -72,9 +72,6 @@ namespace rocksdb namespace nano { -// Configs -bandwidth_limiter::config bandwidth_limiter_config (node_config const &); - class node final : public std::enable_shared_from_this { public: