SharedStorage/utils/config/GlobalConfig.cpp

59 lines
2.0 KiB
C++

//
// Created by Kirill Zhukov on 21.04.2025.
//
#include "GlobalConfig.h"
#include <iostream>
#include "utils/toml/toml.hpp"
namespace usub::utils
{
std::unordered_map<std::string, DatabaseSettings> database_settings_map;
void load_global_config(toml::parse_result& path)
{
try
{
if (auto databases = path["databases"].as_table())
{
for (const auto& db : *databases)
{
const auto& db_name = db.first;
const auto& db_config = db.second;
if (!db_config.is_table())
continue;
DatabaseSettings settings;
const auto& table = *db_config.as_table();
if (auto val = table[toml::path("shm_queue_capacity")].value<size_t>())
settings.shm_queue_capacity = *val;
if (auto val = table[toml::path("max_memtable_size")].value<size_t>())
settings.max_memtable_size = *val;
if (auto val = table[toml::path("l0_queue_capacity")].value<size_t>())
settings.l0_queue_capacity = *val;
if (auto val = table[toml::path("estimated_element_size")].value<size_t>())
settings.estimated_element_size = *val;
database_settings_map.emplace(db_name.str(), settings);
std::cout << "[Config] Loaded for DB '" << db_name << "': "
<< "shm_queue_capacity=" << settings.shm_queue_capacity
<< ", max_memtable_size=" << settings.max_memtable_size
<< ", l0_queue_capacity=" << settings.l0_queue_capacity
<< ", estimated_element_size=" << settings.estimated_element_size
<< "\n";
}
}
}
catch (const std::exception& ex)
{
std::cerr << "[Config] Failed to load config: " << ex.what() << "\n";
}
}
}