userver: userver/congestion_control/controllers/linear_config.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
linear_config.hpp
1#pragma once
2
3#include <chrono>
4#include <cstddef>
5
6#include <userver/dynamic_config/snapshot.hpp>
7
8USERVER_NAMESPACE_BEGIN
9
10namespace congestion_control::v2 {
11
12struct Config {
13 double errors_threshold_percent{5.0}; // 5%
14 std::size_t safe_delta_limit{10};
15 std::size_t timings_burst_threshold{5};
16 std::chrono::milliseconds min_timings{20};
17 std::size_t min_limit{10};
18 std::size_t min_qps{10};
19 bool use_separate_stats{false};
20};
21
22template <typename T>
23Config ConvertConfig(const T& cfg) {
24 Config config;
25 config.errors_threshold_percent = cfg.errors_threshold_percent;
26 config.safe_delta_limit = cfg.safe_delta_limit;
27 config.timings_burst_threshold = cfg.timings_burst_times_threshold;
28 config.min_timings = cfg.min_timings_ms;
29 config.min_limit = cfg.min_limit;
30 config.min_qps = cfg.min_qps;
31 config.use_separate_stats = cfg.use_separate_stats;
32 return config;
33}
34
35Config Parse(const formats::json::Value& value, formats::parse::To<Config>);
36
37} // namespace congestion_control::v2
38
39USERVER_NAMESPACE_END