10#include <userver/clients/http/cancellation_policy.hpp>
11#include <userver/dynamic_config/fwd.hpp>
12#include <userver/formats/json_fwd.hpp>
13#include <userver/yaml_config/fwd.hpp>
15namespace dynamic_config::http_client_connect_throttle {
16struct VariableTypeRaw;
17using VariableType = VariableTypeRaw;
20USERVER_NAMESPACE_BEGIN
26namespace clients::http {
29 bool update_header{
true};
33struct ClientSettings
final {
34 std::string thread_name_prefix{};
41ClientSettings Parse(
const yaml_config::
YamlConfig& value, formats::
parse::To<ClientSettings>);
45namespace clients::http::impl {
47struct ThrottleConfig
final {
48 static constexpr size_t kNoLimit = -1;
50 std::size_t http_connect_limit{kNoLimit};
51 std::chrono::microseconds http_connect_rate{0};
52 std::size_t https_connect_limit{kNoLimit};
53 std::chrono::microseconds https_connect_rate{0};
54 std::size_t per_host_connect_limit{kNoLimit};
55 std::chrono::microseconds per_host_connect_rate{0};
58ThrottleConfig Parse(
const ::dynamic_config::http_client_connect_throttle::VariableType&);
62 static constexpr std::size_t kDefaultConnectionPoolSize = 10000;
64 std::size_t connection_pool_size{kDefaultConnectionPoolSize};
65 ThrottleConfig throttle;