25#ifndef MYSQL_HARNESS_PLUGIN_CONFIG_INCLUDED
26#define MYSQL_HARNESS_PLUGIN_CONFIG_INCLUDED
33#include "harness_export.h"
43 using std::invalid_argument::invalid_argument;
51 using std::invalid_argument::invalid_argument;
89 std::string get_option_description(
91 const std::string &option)
const;
102 virtual std::string
get_default(
const std::string &option)
const = 0;
125 template <
class Func>
127 const std::string &option,
128 Func &&transformer)
const {
129 const auto value = get_option_string_or_default_(section, option);
131 return transformer(value, get_option_description(section, option));
150 template <
class Func>
153 Func &&transformer)
const {
154 const auto value = get_option_string_(section, option);
156 return transformer(value, get_option_description(section, option));
170 [[deprecated(
"use get_option(..., StringOption{}) instead")]]
174 const std::string &option)
const {
176 [](
auto const &value,
auto const &) {
return value; });
199 [[deprecated(
"used get_option(..., IntOption<T>{}) instead")]]
202 const std::string &option, T min_value = 0,
203 T max_value = std::numeric_limits<T>::max())
const {
225 [[deprecated(
"used get_option(..., MilliSecondsOption{}) instead")]]
227 std::chrono::milliseconds
230 double min_value = 0.0,
231 double max_value = std::numeric_limits<double>::max())
const {
241 : section_name_{get_section_name(section)} {}
249 static std::string get_section_name(
265 std::optional<std::string> get_option_string_(
267 const std::string &option)
const;
277 std::string get_option_string_or_default_(
279 const std::string &option)
const;
Retrieve and manage plugin configuration.
Definition: plugin_config.h:61
std::chrono::milliseconds get_option_milliseconds(const mysql_harness::ConfigSection *section, const std::string &option, double min_value=0.0, double max_value=std::numeric_limits< double >::max()) const
Gets a number of milliseconds using the given option.
Definition: plugin_config.h:228
T get_uint_option(const mysql_harness::ConfigSection *section, const std::string &option, T min_value=0, T max_value=std::numeric_limits< T >::max()) const
Gets an unsigned integer using the given option.
Definition: plugin_config.h:201
BasePluginConfig(const mysql_harness::ConfigSection *section)
Constructor for derived classes.
Definition: plugin_config.h:240
std::string get_option_string(const mysql_harness::ConfigSection *section, const std::string &option) const
Gets value of given option as string.
Definition: plugin_config.h:173
decltype(auto) get_option_no_default(const mysql_harness::ConfigSection *section, const std::string &option, Func &&transformer) const
get option value.
Definition: plugin_config.h:151
BasePluginConfig & operator=(BasePluginConfig &&)=default
BasePluginConfig(BasePluginConfig &&)=default
virtual bool is_required(const std::string &option) const =0
Returns whether the given option is required.
BasePluginConfig()=default
BasePluginConfig(const BasePluginConfig &)=default
std::string section_name_
Name of the section.
Definition: plugin_config.h:256
decltype(auto) get_option(const mysql_harness::ConfigSection *section, const std::string &option, Func &&transformer) const
get option value.
Definition: plugin_config.h:126
virtual std::string get_default(const std::string &option) const =0
Gets the default for the given option.
virtual ~BasePluginConfig()=default
destructor
BasePluginConfig & operator=(const BasePluginConfig &)=default
Configuration section.
Definition: config_parser.h:140
Definition: config_option.h:167
Definition: config_option.h:107
Exception that gets thrown when the configuration option is present but it is empty value.
Definition: plugin_config.h:49
Exception that gets thrown when the configuration option is missing.
Definition: plugin_config.h:41