userver: userver/clients/http/config.hpp Source File
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
config.hpp
1#pragma once
2
3#include <chrono>
4#include <string>
5
6#include <userver/dynamic_config/fwd.hpp>
7#include <userver/formats/json_fwd.hpp>
8#include <userver/yaml_config/fwd.hpp>
9
10namespace dynamic_config::http_client_connect_throttle {
11struct VariableTypeRaw;
12using VariableType = VariableTypeRaw;
13} // namespace dynamic_config::http_client_connect_throttle
14
15USERVER_NAMESPACE_BEGIN
16
17namespace tracing {
19} // namespace tracing
20
21namespace clients::http {
22
24 bool update_header{true};
25};
26
27enum class CancellationPolicy {
28 kIgnore,
29 kCancel,
30};
31
32CancellationPolicy Parse(yaml_config::YamlConfig value, formats::parse::To<CancellationPolicy>);
33
34// Static config
35struct ClientSettings final {
36 std::string thread_name_prefix{};
37 size_t io_threads{8};
38 DeadlinePropagationConfig deadline_propagation{};
39 const tracing::TracingManagerBase* tracing_manager{nullptr};
40 CancellationPolicy cancellation_policy{CancellationPolicy::kCancel};
41};
42
43ClientSettings Parse(const yaml_config::YamlConfig& value, formats::parse::To<ClientSettings>);
44
45} // namespace clients::http
46
47namespace clients::http::impl {
48
49struct ThrottleConfig final {
50 static constexpr size_t kNoLimit = -1;
51
52 std::size_t http_connect_limit{kNoLimit};
53 std::chrono::microseconds http_connect_rate{0};
54 std::size_t https_connect_limit{kNoLimit};
55 std::chrono::microseconds https_connect_rate{0};
56 std::size_t per_host_connect_limit{kNoLimit};
57 std::chrono::microseconds per_host_connect_rate{0};
58};
59
60ThrottleConfig Parse(const ::dynamic_config::http_client_connect_throttle::VariableType&);
61
62// Dynamic config
63struct Config final {
64 static constexpr std::size_t kDefaultConnectionPoolSize = 10000;
65
66 std::size_t connection_pool_size{kDefaultConnectionPoolSize};
67 std::string proxy;
68 ThrottleConfig throttle;
69};
70
71} // namespace clients::http::impl
72
73USERVER_NAMESPACE_END