webserv/webserv/main.cpp

44 lines
1.5 KiB
C++

#include <webserv/config/ConfigManager.hpp> // for ConfigManager
#include <webserv/config/validation/ConfigValidator.hpp> // for ConfigValidator
#include <webserv/config/validation/ValidationResult.hpp> // for ValidationResult
#include <webserv/log/Log.hpp> // for Log
#include <webserv/server/Server.hpp> // for Server
#include <iostream> // for ios_base
#include <string> // for allocator, basic_string, char_traits, operator+, string
#include <vector> // for vector
#include <csignal>
int main(int argc, char **argv)
{
if (argc < 2)
{
std::cerr << "Usage: " + std::string(argv[0]) + " <config_file_path>"; // NOLINT
return 1;
}
Log::setFileChannel("logs/webserv.log");
Log::setStdoutChannel();
Log::info("\n======================\nStarting webserv...\n======================\n");
ConfigManager &configManager = ConfigManager::getInstance();
configManager.init(argv[1]); // NOLINT
ConfigValidator validator{configManager.getGlobalConfig()};
if (validator.hasErrors())
{
Log::error("Configuration validation failed with the following errors:");
for (const auto &error : validator.getErrors())
{
Log::error(" - " + error.getMessage());
}
return 1;
}
Log::debug("ConfigManager initialized successfully.");
Server server(configManager);
::signal(SIGINT, Server::signalHandler);
server.run();
return 0;
}