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};
20
21template <typename T>
22Config ConvertConfig(const T& cfg) {
23 Config config;
24 config.errors_threshold_percent = cfg.errors_threshold_percent;
25 config.safe_delta_limit = cfg.safe_delta_limit;
26 config.timings_burst_threshold = cfg.timings_burst_times_threshold;
27 config.min_timings = cfg.min_timings_ms;
28 config.min_limit = cfg.min_limit;
29 config.min_qps = cfg.min_qps;
30 return config;
31}
32
33Config Parse(const formats::json::Value& value, formats::parse::To<Config>);
34
35} // namespace congestion_control::v2
36
37USERVER_NAMESPACE_END