nfd::ConfigFile Class Reference

Configuration file parsing utility. More...

#include <daemon/common/config-file.hpp>

+ Inheritance diagram for nfd::ConfigFile:
+ Collaboration diagram for nfd::ConfigFile:

Classes

class  Error
 

Public Member Functions

 ConfigFile (UnknownConfigSectionHandler unknownSectionCallback=throwErrorOnUnknownSection)
 
void addSectionHandler (const std::string &sectionName, ConfigSectionHandler subscriber)
 Setup notification of configuration file sections. More...
 
void parse (const ConfigSection &config, bool isDryRun, const std::string &filename)
 
void parse (const std::string &filename, bool isDryRun)
 
void parse (const std::string &input, bool isDryRun, const std::string &filename)
 
void parse (std::istream &input, bool isDryRun, const std::string &filename)
 

Static Public Member Functions

template<typename T >
static void checkRange (T value, T min, T max, const std::string &key, const std::string &sectionName)
 Check that a value is within the inclusive range [min, max]. More...
 
static void ignoreUnknownSection (const std::string &filename, const std::string &sectionName, const ConfigSection &section, bool isDryRun)
 
template<typename T >
static T parseNumber (const ConfigSection &node, const std::string &key, const std::string &sectionName)
 Parse a numeric (integral or floating point) config option. More...
 
template<typename T >
static T parseNumber (const ConfigSection::value_type &option, const std::string &sectionName)
 
static bool parseYesNo (const ConfigSection &node, const std::string &key, const std::string &sectionName)
 Parse a config option that can be either "yes" or "no". More...
 
static bool parseYesNo (const ConfigSection::value_type &option, const std::string &sectionName)
 
static void throwErrorOnUnknownSection (const std::string &filename, const std::string &sectionName, const ConfigSection &section, bool isDryRun)
 

Detailed Description

Configuration file parsing utility.

Definition at line 65 of file config-file.hpp.

Constructor & Destructor Documentation

◆ ConfigFile()

nfd::ConfigFile::ConfigFile ( UnknownConfigSectionHandler  unknownSectionCallback = throwErrorOnUnknownSection)
explicit

Definition at line 35 of file config-file.cpp.

Member Function Documentation

◆ addSectionHandler()

void nfd::ConfigFile::addSectionHandler ( const std::string &  sectionName,
ConfigSectionHandler  subscriber 
)

Setup notification of configuration file sections.

Definition at line 77 of file config-file.cpp.

◆ checkRange()

template<typename T >
static void nfd::ConfigFile::checkRange ( value,
min,
max,
const std::string &  key,
const std::string &  sectionName 
)
inlinestatic

Check that a value is within the inclusive range [min, max].

Exceptions
Errorthe value is out of the acceptable range

Definition at line 141 of file config-file.hpp.

◆ ignoreUnknownSection()

void nfd::ConfigFile::ignoreUnknownSection ( const std::string &  filename,
const std::string &  sectionName,
const ConfigSection section,
bool  isDryRun 
)
static

Definition at line 51 of file config-file.cpp.

◆ parse() [1/4]

void nfd::ConfigFile::parse ( const ConfigSection config,
bool  isDryRun,
const std::string &  filename 
)
Parameters
configConfigSection that needs to be processed
isDryRuntrue if performing a dry run of configuration, false otherwise
filenamelogical filename of the config file, can appear in error messages
Exceptions
ConfigFile::Errorif parse error

Definition at line 116 of file config-file.cpp.

◆ parse() [2/4]

void nfd::ConfigFile::parse ( const std::string &  filename,
bool  isDryRun 
)
Parameters
filenamefile to parse
isDryRuntrue if performing a dry run of configuration, false otherwise
Exceptions
ConfigFile::Errorif file not found
ConfigFile::Errorif parse error

Definition at line 84 of file config-file.cpp.

◆ parse() [3/4]

void nfd::ConfigFile::parse ( const std::string &  input,
bool  isDryRun,
const std::string &  filename 
)
Parameters
inputconfiguration (as a string) to parse
isDryRuntrue if performing a dry run of configuration, false otherwise
filenamelogical filename of the config file, can appear in error messages
Exceptions
ConfigFile::Errorif file not found
ConfigFile::Errorif parse error

Definition at line 95 of file config-file.cpp.

◆ parse() [4/4]

void nfd::ConfigFile::parse ( std::istream &  input,
bool  isDryRun,
const std::string &  filename 
)
Parameters
inputstream to parse
isDryRuntrue if performing a dry run of configuration, false otherwise
filenamelogical filename of the config file, can appear in error messages
Exceptions
ConfigFile::Errorif parse error

Definition at line 102 of file config-file.cpp.

◆ parseNumber() [1/2]

template<typename T >
static T nfd::ConfigFile::parseNumber ( const ConfigSection node,
const std::string &  key,
const std::string &  sectionName 
)
inlinestatic

Parse a numeric (integral or floating point) config option.

Template Parameters
Tan arithmetic type
Returns
the numeric value of the parsed option
Exceptions
Errorthe value cannot be converted to the specified type

Definition at line 114 of file config-file.hpp.

◆ parseNumber() [2/2]

template<typename T >
static T nfd::ConfigFile::parseNumber ( const ConfigSection::value_type &  option,
const std::string &  sectionName 
)
inlinestatic

Definition at line 130 of file config-file.hpp.

◆ parseYesNo() [1/2]

bool nfd::ConfigFile::parseYesNo ( const ConfigSection node,
const std::string &  key,
const std::string &  sectionName 
)
static

Parse a config option that can be either "yes" or "no".

Return values
true"yes"
false"no"
Exceptions
Errorthe value is neither "yes" nor "no"

Definition at line 60 of file config-file.cpp.

◆ parseYesNo() [2/2]

static bool nfd::ConfigFile::parseYesNo ( const ConfigSection::value_type &  option,
const std::string &  sectionName 
)
inlinestatic

Definition at line 100 of file config-file.hpp.

◆ throwErrorOnUnknownSection()

void nfd::ConfigFile::throwErrorOnUnknownSection ( const std::string &  filename,
const std::string &  sectionName,
const ConfigSection section,
bool  isDryRun 
)
static

Definition at line 41 of file config-file.cpp.