X-Git-Url: https://git.dlugolecki.net.pl/?p=vlp.git;a=blobdiff_plain;f=src%2Fglobal%2Fvlp%2Fconfig.cpp;fp=src%2Fglobal%2Fvlp%2Fconfig.cpp;h=701b3e43ca65fac784a97b25f67dad4598171186;hp=2191cd879bab3a16c51ecc3643b442fdded6868e;hb=b176969d4b09abbb194e8bf49aeeb326b4250007;hpb=32aaa65caf501e87b2468acba3feceb62118dc23 diff --git a/src/global/vlp/config.cpp b/src/global/vlp/config.cpp index 2191cd8..701b3e4 100644 --- a/src/global/vlp/config.cpp +++ b/src/global/vlp/config.cpp @@ -45,7 +45,15 @@ bool Config::load(const char * configFilePath) bool Config::save(const char * configFilePath) { - return false; + if(!config_write_file(&cfg, configFilePath)) { + fprintf(stderr, + "Error: Cannot save configuration file: %s!\n", + configFilePath + ); + return false; + } + + return true; } int Config::getNodeNumber() @@ -67,6 +75,19 @@ int Config::getNodeNumber() } void Config::setNodeNumber(int nodeNumber) { + config_setting_t *setting; + config_setting_t *root = config_root_setting(&cfg); + + setting = config_setting_get_member(root, "node_number"); + + if(!setting) { + setting = config_setting_add( + root, + "node_number", + CONFIG_TYPE_INT + ); + } + config_setting_set_int(setting, nodeNumber); } std::vector Config::getHosts() @@ -113,6 +134,21 @@ std::vector Config::getHosts() return hosts; } +void Config::setHosts(std::vector hosts) +{ + config_setting_t *root = config_root_setting(&cfg); + config_setting_t *setting = NULL; + + setting = config_setting_add(root, "host", CONFIG_TYPE_ARRAY); + + for (auto host : hosts) { + config_setting_set_string( + config_setting_add(setting, NULL, CONFIG_TYPE_STRING), + host.c_str() + ); + } +} + ConnectionType Config::getConnectionType() { config_setting_t *setting = config_lookup(&cfg, "type"); @@ -137,6 +173,25 @@ ConnectionType Config::getConnectionType() } void Config::setConnectionType(ConnectionType type) { + config_setting_t *setting; + config_setting_t *root = config_root_setting(&cfg); + + setting = config_setting_get_member(root, "type"); + + if(!setting) { + setting = config_setting_add( + root, + "type", + CONFIG_TYPE_STRING + ); + } + + if (type == EXPLICIT) { + config_setting_set_string(setting, "explicit"); + } + else if (type == REGISTER) { + config_setting_set_string(setting, "register"); + } } const char * Config::getProgramDir() @@ -156,6 +211,19 @@ const char * Config::getProgramDir() } void Config::setProgramDir(const char * programDir) { + config_setting_t *setting; + config_setting_t *root = config_root_setting(&cfg); + + setting = config_setting_get_member(root, "progdir"); + + if(!setting) { + setting = config_setting_add( + root, + "progdir", + CONFIG_TYPE_STRING + ); + } + config_setting_set_string(setting, programDir); } }