Fawkes API
Fawkes Development Version
|
24 #ifndef _CONFIG_YAML_H_
25 #define _CONFIG_YAML_H_
27 #include <config/config.h>
28 #include <utils/system/fam.h>
29 #include <yaml-cpp/yaml.h>
40 class YamlConfigurationNode;
42 class YamlConfiguration :
public Configuration,
public FamListener
51 virtual void load(
const char *file_path);
53 virtual bool exists(
const char *path);
54 virtual bool is_float(
const char *path);
55 virtual bool is_uint(
const char *path);
56 virtual bool is_int(
const char *path);
57 virtual bool is_bool(
const char *path);
59 virtual bool is_list(
const char *path);
63 virtual std::string
get_type(
const char *path);
64 virtual float get_float(
const char *path);
65 virtual unsigned int get_uint(
const char *path);
66 virtual int get_int(
const char *path);
67 virtual bool get_bool(
const char *path);
68 virtual std::string
get_string(
const char *path);
69 virtual std::vector<float>
get_floats(
const char *path);
70 virtual std::vector<unsigned int>
get_uints(
const char *path);
71 virtual std::vector<int>
get_ints(
const char *path);
72 virtual std::vector<bool>
get_bools(
const char *path);
73 virtual std::vector<std::string>
get_strings(
const char *path);
78 virtual void set_float(
const char *path,
float f);
79 virtual void set_uint(
const char *path,
unsigned int uint);
80 virtual void set_int(
const char *path,
int i);
81 virtual void set_bool(
const char *path,
bool b);
82 virtual void set_string(
const char *path, std::string &s);
83 virtual void set_string(
const char *path,
const char *s);
84 virtual void set_floats(
const char *path, std::vector<float> &f);
85 virtual void set_uints(
const char *path, std::vector<unsigned int> &uint);
86 virtual void set_ints(
const char *path, std::vector<int> &i);
87 virtual void set_bools(
const char *path, std::vector<bool> &b);
88 virtual void set_strings(
const char *path, std::vector<std::string> &s);
89 virtual void set_strings(
const char *path, std::vector<const char *> &s);
90 virtual void set_comment(
const char *path, std::string &comment);
91 virtual void set_comment(
const char *path,
const char *comment);
93 virtual void erase(
const char *path);
115 virtual void fam_event(
const char *filename,
unsigned int mask);
128 virtual bool valid()
const;
130 virtual const char *
path()
const;
131 virtual const char *
type()
const;
135 virtual bool is_int()
const;
142 virtual unsigned int get_uint()
const;
146 virtual std::vector<float>
get_floats()
const;
147 virtual std::vector<unsigned int>
get_uints()
const;
148 virtual std::vector<int>
get_ints()
const;
149 virtual std::vector<bool>
get_bools()
const;
150 virtual std::vector<std::string>
get_strings()
const;
159 std::map<std::string, std::shared_ptr<YamlConfigurationNode>> nodes_;
160 std::map<std::string, std::shared_ptr<YamlConfigurationNode>>
::iterator current_;
168 LoadQueueEntry(std::string fn,
bool im,
bool id =
false)
169 : filename(fn), ignore_missing(im), is_dir(id)
173 std::string filename;
179 std::shared_ptr<YamlConfigurationNode> query(
const char *path)
const;
181 read_meta_doc(YAML::Node &doc, std::queue<LoadQueueEntry> &load_queue, std::string &host_file);
182 std::shared_ptr<YamlConfigurationNode> read_config_doc(
const YAML::Node &doc);
183 std::shared_ptr<YamlConfigurationNode> read_yaml_file(std::string filename,
185 std::queue<LoadQueueEntry> &load_queue,
186 std::string & host_file);
187 void read_yaml_config(std::string filename,
188 std::string & host_file,
189 std::shared_ptr<YamlConfigurationNode> &root,
190 std::shared_ptr<YamlConfigurationNode> &host_root,
191 std::list<std::string> & files,
192 std::list<std::string> & dirs);
193 void write_host_file();
195 std::string config_file_;
196 std::string host_file_;
198 std::shared_ptr<YamlConfigurationNode> root_;
199 std::shared_ptr<YamlConfigurationNode> host_root_;
202 Mutex *write_pending_mutex_;
207 typedef std::map<std::string, YAML::Node *> DocMap;
208 mutable DocMap documents_;
213 FamThread *fam_thread_;
virtual void set_floats(const char *path, std::vector< float > &f)
virtual bool is_string(const char *path)
virtual bool exists(const char *path)
virtual void set_default_string(const char *path, std::string &s)
virtual void load(const char *file_path)
virtual bool is_int() const
virtual void set_int(const char *path, int i)
virtual void set_uints(const char *path, std::vector< unsigned int > &uint)
virtual bool is_uint() const
virtual bool is_list() const
virtual void fam_event(const char *filename, unsigned int mask)
virtual bool is_default() const
virtual void set_default_comment(const char *path, const char *comment)
virtual std::vector< int > get_ints() const
virtual std::vector< unsigned int > get_uints() const
YamlConfiguration()
Constructor.
virtual std::vector< float > get_floats() const
virtual ValueIterator * get_value(const char *path)
virtual int get_int() const
virtual std::vector< int > get_ints(const char *path)
virtual void set_strings(const char *path, std::vector< std::string > &s)
YamlValueIterator()
Constructor.
virtual unsigned int get_uint(const char *path)
virtual std::string get_type(const char *path)
virtual void set_float(const char *path, float f)
virtual std::vector< bool > get_bools() const
virtual unsigned int get_uint() const
virtual void set_string(const char *path, std::string &s)
virtual void set_comment(const char *path, std::string &comment)
virtual bool valid() const
virtual void set_bool(const char *path, bool b)
virtual std::vector< std::string > get_strings(const char *path)
virtual bool is_float(const char *path)
virtual void set_uint(const char *path, unsigned int uint)
virtual bool is_list(const char *path)
virtual std::vector< unsigned int > get_uints(const char *path)
void unlock()
Unlock the config.
virtual std::string get_default_comment(const char *path)
virtual size_t get_list_size() const
virtual std::string get_comment() const
virtual int get_int(const char *path)
virtual ~YamlConfiguration()
Destructor.
virtual bool is_string() const
void lock()
Lock the config.
virtual std::string get_string(const char *path)
virtual std::vector< bool > get_bools(const char *path)
virtual bool is_int(const char *path)
virtual bool is_default(const char *path)
virtual std::string get_string() const
virtual bool get_bool(const char *path)
virtual void set_default_float(const char *path, float f)
virtual void set_default_int(const char *path, int i)
virtual std::vector< float > get_floats(const char *path)
virtual float get_float() const
virtual bool is_uint(const char *path)
ValueIterator * search(const char *path)
virtual std::string get_as_string() const
virtual bool get_bool() const
bool try_lock()
Try to lock the config.
virtual const char * path() const
virtual const char * type() const
virtual std::string get_comment(const char *path)
virtual void set_default_uint(const char *path, unsigned int uint)
virtual void set_ints(const char *path, std::vector< int > &i)
virtual void erase(const char *path)
virtual void set_bools(const char *path, std::vector< bool > &b)
virtual void set_default_bool(const char *path, bool b)
virtual bool is_bool() const
virtual std::vector< std::string > get_strings() const
virtual bool is_bool(const char *path)
ValueIterator * iterator()
virtual float get_float(const char *path)
virtual bool is_float() const
virtual void copy(Configuration *copyconf)
virtual void erase_default(const char *path)