59 lines
2.0 KiB
C++
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";
|
|
}
|
|
}
|
|
}
|