// // libtgvoip is free and unencumbered public domain software. // For more information, see http://unlicense.org or the UNLICENSE file // you should have received with this source code distribution. // #include "VoIPServerConfig.h" #include #include "tools/logging.h" #include #include using namespace tgvoip; ServerConfig *ServerConfig::sharedInstance = NULL; ServerConfig::ServerConfig() { } ServerConfig::~ServerConfig() { } ServerConfig *ServerConfig::GetSharedInstance() { if (!sharedInstance) sharedInstance = new ServerConfig(); return sharedInstance; } bool ServerConfig::GetBoolean(std::string name, bool fallback) { MutexGuard sync(mutex); if (ContainsKey(name) && config[name].is_bool()) return config[name].bool_value(); return fallback; } double ServerConfig::GetDouble(std::string name, double fallback) { MutexGuard sync(mutex); if (ContainsKey(name) && config[name].is_number()) return config[name].number_value(); return fallback; } int32_t ServerConfig::GetInt(std::string name, int32_t fallback) { MutexGuard sync(mutex); if (ContainsKey(name) && config[name].is_number()) return config[name].int_value(); return fallback; } uint32_t ServerConfig::GetUInt(std::string name, uint32_t fallback) { MutexGuard sync(mutex); if (ContainsKey(name) && config[name].is_number()) return static_cast(config[name].int_value()); return fallback; } std::string ServerConfig::GetString(std::string name, std::string fallback) { MutexGuard sync(mutex); if (ContainsKey(name) && config[name].is_string()) return config[name].string_value(); return fallback; } void ServerConfig::Update(std::string jsonString) { MutexGuard sync(mutex); LOGD("=== Updating voip config ==="); LOGD("%s", jsonString.c_str()); std::string jsonError; config = json11::Json::parse(jsonString, jsonError); if (!jsonError.empty()) LOGE("Error parsing server config: %s", jsonError.c_str()); } bool ServerConfig::ContainsKey(std::string key) { return config.object_items().find(key) != config.object_items().end(); }