1 #include "vlp/config.h"
23 bool Config::load(const char * configFilePath)
25 file = fopen(configFilePath, "rt");
28 "Error: Cannot load configuration file: %s!\n",
34 if (!config_read(&cfg, file)) {
36 "%s! In file %s, line %d\n",
37 config_error_text(&cfg),
38 config_error_file(&cfg),
39 config_error_line(&cfg));
46 bool Config::save(const char * configFilePath)
48 if(!config_write_file(&cfg, configFilePath)) {
50 "Error: Cannot save configuration file: %s!\n",
59 int Config::getNodeNumber()
61 config_setting_t *setting = config_lookup(&cfg, "node_number");
65 "%s! In file %s, '%s' was not found.\n",
67 config_error_file(&cfg),
74 return config_setting_get_int(setting);
76 void Config::setNodeNumber(int nodeNumber)
78 config_setting_t *setting;
79 config_setting_t *root = config_root_setting(&cfg);
81 setting = config_setting_get_member(root, "node_number");
84 setting = config_setting_add(
90 config_setting_set_int(setting, nodeNumber);
93 std::vector<std::string> Config::getHosts()
95 config_setting_t *setting = config_lookup(&cfg, "host");
96 std::vector<std::string> hosts;
100 "%s! In file %s, '%s' was not found.\n",
102 "configuration",//config_error_file(&cfg),
109 switch(config_setting_type(setting)) {
110 /* TODO: Deprecated. Made for back compatibility. */
111 case CONFIG_TYPE_STRING: {
112 std::string host(config_setting_get_string(setting));
113 hosts.push_back(host);
116 case CONFIG_TYPE_ARRAY: {
117 int size = config_setting_length(setting);
119 for (int i = 0; i < size; i++) {
120 host = config_setting_get_string_elem(setting, i);
121 hosts.push_back(host);
127 "%s! In file %s, bad entry type for %s will not be read.\n",
129 "configuration",//config_error_file(&cfg),
137 void Config::setHosts(std::vector<std::string> hosts)
139 config_setting_t *root = config_root_setting(&cfg);
140 config_setting_t *setting = NULL;
142 setting = config_setting_add(root, "host", CONFIG_TYPE_ARRAY);
144 for (auto host : hosts) {
145 config_setting_set_string(
146 config_setting_add(setting, NULL, CONFIG_TYPE_STRING),
152 ConnectionType Config::getConnectionType()
154 config_setting_t *setting = config_lookup(&cfg, "type");
158 "%s! In file %s, '%s' was not found.\n",
160 "configuration",//config_error_file(&cfg),
167 /* same as strcmp(..) == 0 */
168 if (!strcmp(config_setting_get_string(setting), "explicit")) {
174 void Config::setConnectionType(ConnectionType type)
176 config_setting_t *setting;
177 config_setting_t *root = config_root_setting(&cfg);
179 setting = config_setting_get_member(root, "type");
182 setting = config_setting_add(
189 if (type == EXPLICIT) {
190 config_setting_set_string(setting, "explicit");
192 else if (type == REGISTER) {
193 config_setting_set_string(setting, "register");
197 const char * Config::getProgramDir()
199 config_setting_t *setting = config_lookup(&cfg, "progdir");
203 "%s! In file %s, '%s' was not found.\n",
205 "configuration",//config_error_file(&cfg),
210 return config_setting_get_string(setting);
212 void Config::setProgramDir(const char * programDir)
214 config_setting_t *setting;
215 config_setting_t *root = config_root_setting(&cfg);
217 setting = config_setting_get_member(root, "progdir");
220 setting = config_setting_add(
226 config_setting_set_string(setting, programDir);