config/Data: merge the two duration parser methods, pass minimum value
This commit is contained in:
parent
3733bc57b7
commit
1e9e182a32
|
@ -10,7 +10,8 @@
|
|||
|
||||
StateFileConfig::StateFileConfig(const ConfigData &config)
|
||||
:path(config.GetPath(ConfigOption::STATE_FILE)),
|
||||
interval(config.GetUnsigned(ConfigOption::STATE_FILE_INTERVAL,
|
||||
interval(config.GetDuration(ConfigOption::STATE_FILE_INTERVAL,
|
||||
std::chrono::seconds{1},
|
||||
DEFAULT_INTERVAL)),
|
||||
restore_paused(config.GetBool(ConfigOption::RESTORE_PAUSED, false))
|
||||
{
|
||||
|
|
|
@ -86,32 +86,17 @@ ConfigData::GetPositive(ConfigOption option, unsigned default_value) const
|
|||
}
|
||||
|
||||
std::chrono::steady_clock::duration
|
||||
ConfigData::GetUnsigned(ConfigOption option,
|
||||
ConfigData::GetDuration(ConfigOption option,
|
||||
std::chrono::steady_clock::duration min_value,
|
||||
std::chrono::steady_clock::duration default_value) const
|
||||
{
|
||||
return With(option, [default_value](const char *s){
|
||||
return With(option, [min_value, default_value](const char *s){
|
||||
if (s == nullptr)
|
||||
return default_value;
|
||||
|
||||
auto value = ParseDuration(s);
|
||||
if (value < std::chrono::steady_clock::duration{})
|
||||
throw std::runtime_error("Value must not be negative");
|
||||
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
std::chrono::steady_clock::duration
|
||||
ConfigData::GetPositive(ConfigOption option,
|
||||
std::chrono::steady_clock::duration default_value) const
|
||||
{
|
||||
return With(option, [default_value](const char *s){
|
||||
if (s == nullptr)
|
||||
return default_value;
|
||||
|
||||
auto value = ParseDuration(s);
|
||||
if (value <= std::chrono::steady_clock::duration{})
|
||||
throw std::runtime_error("Value must be positive");
|
||||
if (value < min_value)
|
||||
throw std::runtime_error{"Value is too small"};
|
||||
|
||||
return value;
|
||||
});
|
||||
|
|
|
@ -60,15 +60,12 @@ struct ConfigData {
|
|||
unsigned GetUnsigned(ConfigOption option,
|
||||
unsigned default_value) const;
|
||||
|
||||
std::chrono::steady_clock::duration
|
||||
GetUnsigned(ConfigOption option,
|
||||
std::chrono::steady_clock::duration default_value) const;
|
||||
|
||||
unsigned GetPositive(ConfigOption option,
|
||||
unsigned default_value) const;
|
||||
|
||||
std::chrono::steady_clock::duration
|
||||
GetPositive(ConfigOption option,
|
||||
GetDuration(ConfigOption option,
|
||||
std::chrono::steady_clock::duration min_value,
|
||||
std::chrono::steady_clock::duration default_value) const;
|
||||
|
||||
bool GetBool(ConfigOption option, bool default_value) const;
|
||||
|
|
Loading…
Reference in New Issue