/
Shymer123
/
LumenServer
Обзор
Документация
Войти
/
Shymer123
/
LumenServer
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Server/SourceFiles/Core/Settings/ConfigManager.cpp
82 строки
3 KB
Shymer123
Initial commit: LumenServer
20 июн 2026, 12:43
20 июн 2026, 12:43
173f14c
Код
Авторство
О чём код?
#include "ConfigManager.h" #include <stdexcept> #include <fstream> #include <nlohmann/json.hpp> namespace Core::Settings { void ConfigManager::loadConfig(const std::string& filePath) { loadFromFile(filePath); loadEnvSecrets(); m_loaded = true; } void ConfigManager::loadFromFile(const std::string& filePath) { std::ifstream file(filePath); if(!file.is_open()) { throw std::runtime_error("Cannot open config file: " + filePath); } nlohmann::json json; file >> json; if(json.contains("Server")) { m_serverSettings.setHost(json["Server"].value("host", m_serverSettings.host())); m_serverSettings.setPort(json["Server"].value("port", m_serverSettings.port())); } if(json.contains("Database")) { std::string typeStr = json["Database"].value( "type", Core::Types::dbTypeToString(m_databaseSettings.type()) ); m_databaseSettings.setType(Core::Types::dbTypeFromString(typeStr)); m_databaseSettings.setHost(json["Database"].value("host", m_databaseSettings.host())); m_databaseSettings.setPort(json["Database"].value("port", m_databaseSettings.port())); m_databaseSettings.setDbName(json["Database"].value("db_name", m_databaseSettings.dbName())); m_databaseSettings.setPoolSize(json["Database"].value("pool_size", m_databaseSettings.poolSize())); } if(json.contains("Threads")) { m_threadSettings.setNetworkThreadsCount(json["Threads"].value("network", m_threadSettings.networkThreadsCount())); m_threadSettings.setWorkerThreadsCount(json["Threads"].value("workers", m_threadSettings.workerThreadsCount())); } } void ConfigManager::loadEnvSecrets() { m_databaseSettings.loadFromEnv(); m_securitySettings.loadFromEnv(); } const ServerSettings& ConfigManager::serverSettings() const { if(!m_loaded) throw std::runtime_error("Config not loaded"); return m_serverSettings; } const DatabaseSettings& ConfigManager::databaseSettings() const { if(!m_loaded) throw std::runtime_error("Config not loaded"); return m_databaseSettings; } const SecuritySettings& ConfigManager::securitySettings() const { if(!m_loaded) throw std::runtime_error("Config not loaded"); return m_securitySettings; } const ThreadSettings& ConfigManager::threadSettings() const { if(!m_loaded) throw std::runtime_error("Config not loaded"); return m_threadSettings; } } // namespace Core::Settings