userver: dynamic_config::Key< Variable > Class Template Reference
Loading...
Searching...
No Matches
dynamic_config::Key< Variable > Class Template Reference

#include <userver/dynamic_config/snapshot.hpp>

Detailed Description

template<typename Variable>
class dynamic_config::Key< Variable >

A config key is a unique identifier for a config variable.

const dynamic_config::Key<bool> kDocStructConfig{"SAMPLE_BOOL_CONFIG", false};

Definition at line 47 of file snapshot.hpp.

Public Types

using VariableType = Variable
 The type of the parsed config variable.
using JsonParser = Variable (*)(const formats::json::Value&)
using DocsMapParser = Variable (*)(const DocsMap&)

Public Member Functions

 Key (std::string_view name, const VariableType &default_value)
 The constructor for a trivial VariableType, e.g. bool, integer, double, string. The default is passed by value.
 Key (std::string_view name, DefaultAsJsonString default_json)
 The constructor for a non-trivial VariableType. The default is passed as a JSON string.
 Key (std::string_view name, JsonParser parser, DefaultAsJsonString default_json)
 The constructor that provides a special parser from JSON.
 Key (std::string_view name, JsonParser parser, DefaultAsJsonString default_json, std::string_view schema_hash)
 Constructor with a schema_hash, used by chaotic codegen.
template<std::size_t N>
 Key (DocsMapParser parser, const ConfigDefault(&default_json_map)[N])
 The constructor that parses multiple JSON config items into a single C++ object.
 Key (ConstantConfig, VariableType value)
 Creates a config that always has the same value.
 Key (const Key &) noexcept=delete
Keyoperator= (const Key &) noexcept=delete
std::string_view GetName () const noexcept
VariableType Parse (const DocsMap &docs_map) const
template<typename Variable>
 Key (impl::InternalTag, std::string_view name)
template<typename Variable>
 Key (impl::InternalTag, DocsMapParser parser)

Member Typedef Documentation

◆ DocsMapParser

template<typename Variable>
using dynamic_config::Key< Variable >::DocsMapParser = Variable (*)(const DocsMap&)

Definition at line 53 of file snapshot.hpp.

◆ JsonParser

template<typename Variable>
using dynamic_config::Key< Variable >::JsonParser = Variable (*)(const formats::json::Value&)

Definition at line 52 of file snapshot.hpp.

◆ VariableType

template<typename Variable>
using dynamic_config::Key< Variable >::VariableType = Variable

The type of the parsed config variable.

Definition at line 50 of file snapshot.hpp.

Constructor & Destructor Documentation

◆ Key() [1/8]

template<typename Variable>
dynamic_config::Key< Variable >::Key ( std::string_view name,
const VariableType & default_value )

The constructor for a trivial VariableType, e.g. bool, integer, double, string. The default is passed by value.

Usage example:

const dynamic_config::Key<bool> kDocStructConfig{"SAMPLE_BOOL_CONFIG", false};

Definition at line 181 of file snapshot.hpp.

◆ Key() [2/8]

template<typename Variable>
dynamic_config::Key< Variable >::Key ( std::string_view name,
DefaultAsJsonString default_json )

The constructor for a non-trivial VariableType. The default is passed as a JSON string.

Uses formats::json::Value Parse customization point function to parse VariableType.

Usage example:

// Parser for a type must be defined in the same namespace as the type itself.
// In this example, JSON parser is only needed for dynamic config, so declaring
// it in hpp is not strictly necessary.
return SampleStructConfig{
.is_foo_enabled = value["is_foo_enabled"].As<bool>(),
.bar_period = value["bar_period_ms"].As<std::chrono::milliseconds>(),
};
}
kSampleStructConfig{"SAMPLE_STRUCT_CONFIG", dynamic_config::DefaultAsJsonString{R"(
{
"is_foo_enabled": false,
"bar_period_ms": 42000
}
)"}};

Definition at line 192 of file snapshot.hpp.

◆ Key() [3/8]

template<typename Variable>
dynamic_config::Key< Variable >::Key ( std::string_view name,
JsonParser parser,
DefaultAsJsonString default_json )

The constructor that provides a special parser from JSON.

Warning
Prefer the constructors above whenever possible.

Can be used when generic Parse is not applicable. Sometimes used to add validation, e.g. minimum, maximum, string pattern, etc.

Definition at line 203 of file snapshot.hpp.

◆ Key() [4/8]

template<typename Variable>
dynamic_config::Key< Variable >::Key ( std::string_view name,
JsonParser parser,
DefaultAsJsonString default_json,
std::string_view schema_hash )

Constructor with a schema_hash, used by chaotic codegen.

Parameters
schema_hashSHA-256(canonical JSON of schema with inlined definitions), lowercase hex, 64 chars. Stored in the global registry and retrievable via dynamic_config::impl::GetRegisteredConfigsMeta() as dynamic_config::RegisteredConfigMeta::schema_hash.
Warning
This constructor is intended for use by chaotic codegen only, not for manual calls. Backwards-incompatible changes may be introduced in the future, e.g. adding additional parameters.

Definition at line 214 of file snapshot.hpp.

◆ Key() [5/8]

template<typename Variable>
template<std::size_t N>
dynamic_config::Key< Variable >::Key ( DocsMapParser parser,
const ConfigDefault(&) default_json_map[N] )

The constructor that parses multiple JSON config items into a single C++ object.

Warning
Prefer to use a separate Key per JSON config item and use the constructors above whenever possible.

Definition at line 232 of file snapshot.hpp.

◆ Key() [6/8]

template<typename Variable>
dynamic_config::Key< Variable >::Key ( ConstantConfig ,
VariableType value )

Creates a config that always has the same value.

Definition at line 241 of file snapshot.hpp.

◆ Key() [7/8]

template<typename Variable>
template<typename Variable>
dynamic_config::Key< Variable >::Key ( impl::InternalTag ,
std::string_view name )

Definition at line 246 of file snapshot.hpp.

◆ Key() [8/8]

template<typename Variable>
template<typename Variable>
dynamic_config::Key< Variable >::Key ( impl::InternalTag ,
DocsMapParser parser )

Definition at line 257 of file snapshot.hpp.

Member Function Documentation

◆ GetName()

template<typename VariableType>
std::string_view dynamic_config::Key< VariableType >::GetName ( ) const
noexcept
Returns
the name of the config variable, as passed at the construction.

Definition at line 266 of file snapshot.hpp.

◆ Parse()

template<typename VariableType>
VariableType dynamic_config::Key< VariableType >::Parse ( const DocsMap & docs_map) const

Parses the config. Useful only in some very niche scenarios. The config value should be typically be retrieved from dynamic_config::Snapshot, which is obtained from components::DynamicConfig in production or from dynamic_config::StorageMock in unit tests.

Definition at line 271 of file snapshot.hpp.


The documentation for this class was generated from the following files: