webserv/webserv/config/ConfigManager.hpp
2025-09-26 18:08:52 +02:00

33 lines
886 B
C++

#pragma once
#include <webserv/config/GlobalConfig.hpp>
#include <webserv/config/ServerConfig.hpp> // for ServerConfig
#include <memory> // for unique_ptr
#include <string> // for string
#include <vector> // for vector
class ADirective;
class GlobalConfig;
class ConfigManager
{
public:
ConfigManager &operator=(const ConfigManager &other) = delete;
ConfigManager &&operator=(const ConfigManager &&other) = delete;
ConfigManager(const ConfigManager &other) = delete;
ConfigManager(const ConfigManager &&other) = delete;
void init(const std::string &filePath);
static ConfigManager &getInstance();
[[nodiscard]] std::vector<ServerConfig *> getServerConfigs() const;
private:
bool initialized_;
ConfigManager();
~ConfigManager();
std::unique_ptr<GlobalConfig> globalConfig_;
void parseConfigFile(const std::string &filePath);
};