userver: userver/dump/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 <optional>
5#include <string>
6#include <string_view>
7#include <unordered_map>
8
9#include <userver/dynamic_config/snapshot.hpp>
10#include <userver/formats/json/value.hpp>
11#include <userver/yaml_config/yaml_config.hpp>
12
13#include <dynamic_config/variables/USERVER_DUMPS.hpp>
14
15USERVER_NAMESPACE_BEGIN
16
17namespace dump {
18
19namespace impl {
20std::chrono::milliseconds
21ParseMs(const formats::json::Value& value, std::optional<std::chrono::milliseconds> default_value = {});
22}
23
24extern const std::string_view kDump;
25extern const std::string_view kMaxDumpAge;
26extern const std::string_view kMinDumpInterval;
27
28using ConfigPatch = ::dynamic_config::userver_dumps::ConfigPatch;
29
30struct Config final {
31 Config(std::string name, const yaml_config::YamlConfig& config, std::string_view dump_root);
32
33 std::string name;
34 uint64_t dump_format_version;
35 bool world_readable;
36 std::string dump_directory;
37 std::string fs_task_processor;
38 uint64_t max_dump_count;
39 std::optional<std::chrono::milliseconds> max_dump_age;
40 bool max_dump_age_set;
41 bool dump_is_encrypted;
42
43 bool static_dumps_enabled;
44 std::chrono::milliseconds static_min_dump_interval;
45};
46
47struct DynamicConfig final {
48 explicit DynamicConfig(const Config& config, ConfigPatch&& patch);
49
50 bool operator==(const DynamicConfig& other) const noexcept;
51 bool operator!=(const DynamicConfig& other) const noexcept;
52
53 bool dumps_enabled;
54 std::chrono::milliseconds min_dump_interval;
55};
56
57} // namespace dump
58
59USERVER_NAMESPACE_END