구현 | 서버생성
유효성 검사
void
ServerManager::createServer(const std::string& configuration_file_path, char **env)
{
std::string config_string = ft::getStringFromFile(configuration_file_path);
std::string config_block;
std::vector<std::string> server_strings;
if (!splitConfigString(config_string, config_block, server_strings))
throw (std::invalid_argument("Failed to split configuration string"));
if (!isValidConfigBlock(config_block))
throw (std::invalid_argument("Config block is not valid."));
m_config = Config(config_block, env);
for (size_t i = 0; i < server_strings.size(); ++i)
{
std::string server_block;
std::vector<std::string> location_blocks;
if (!splitServerString(server_strings[i], server_block, location_blocks))
throw (std::invalid_argument("Failed to split Sever string(" + ft::to_string(i) + ")"));
if (!isValidServerBlock(server_block))
throw (std::invalid_argument("Server block(" + ft::to_string(i) + ") is not valid."));
for (size_t j = 0; j < location_blocks.size(); ++j) {
if (!isValidLocationBlock(location_blocks[j]))
throw (std::invalid_argument("Location block(" + ft::to_string(i) \
+ "-" + ft::to_string(j) + ") is not valid."));
}
m_servers.push_back(Server(this, server_block, location_blocks, &this->m_config));
m_server_fdset.insert(m_servers.back().get_m_fd());
}
writeCreateServerLog();
}Server 생성자
Last updated
Was this helpful?