From dac3df1a031666a963a000f00dd295d4eadf2d9d Mon Sep 17 00:00:00 2001 From: adjoly Date: Thu, 17 Apr 2025 14:36:07 +0200 Subject: [PATCH] =?UTF-8?q?=E3=80=8C=F0=9F=8F=97=EF=B8=8F=E3=80=8D=20wip:?= =?UTF-8?q?=20started=20=5Frun?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.cpp | 6 ++-- src/{server.cpp => server/Server.cpp} | 52 ++++++--------------------- 2 files changed, 13 insertions(+), 45 deletions(-) rename src/{server.cpp => server/Server.cpp} (74%) diff --git a/src/main.cpp b/src/main.cpp index 77512a2..d6f5158 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,11 +6,11 @@ /* By: mmoussou +#include #include #include #include @@ -32,7 +32,7 @@ int main(int ac, char **av) { config::Server *conf; try { - conf = new config::Server(av[1]); + conf = new config::Config(std::string(av[1])); } catch (std::exception &e) { std::cout << e.what() << std::endl; return 1; diff --git a/src/server.cpp b/src/server/Server.cpp similarity index 74% rename from src/server.cpp rename to src/server/Server.cpp index ee7b4c0..9def9c2 100644 --- a/src/server.cpp +++ b/src/server/Server.cpp @@ -1,12 +1,12 @@ /* ************************************************************************** */ /* */ /* ::: :::::::: */ -/* server.cpp :+: :+: :+: */ +/* Server.cpp :+: :+: :+: */ /* +:+ +:+ +:+ */ /* By: adjoly +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/04/11 16:11:40 by adjoly #+# #+# */ -/* Updated: 2025/04/17 12:37:45 by adjoly ### ########.fr */ +/* Updated: 2025/04/17 14:35:01 by adjoly ### ########.fr */ /* */ /* ************************************************************************** */ @@ -87,7 +87,8 @@ void Server::_setup(void) { throw std::runtime_error("no server present in the config file"); std::vector::iterator itH = hosts.begin(); - for (std::vector::iterator itP = ports.begin(); itP != ports.end(); itP++, itH++) { + for (std::vector::iterator itP = ports.begin(); itP != ports.end(); + itP++, itH++) { try { int fd = _createSocket(*itH, *itP); _fds_server.push_back(fd); @@ -99,47 +100,15 @@ void Server::_setup(void) { void Server::_run(void) { struct pollfd fd; + int nbr_client = 0; - fd.fd = _fd_server; - fd.events = POLLIN; - _client_fds.clear(); - _client_fds.push_back(fd); - - int nbr_client = 0; + for (std::vector::iterator it = _fds_server.begin(); + it != _fds_server.end(); it++, nbr_client++) { + fd.fd = *it; + fd.events = POLLIN; + } while (727) { - int ret = poll(_client_fds.data(), nbr_client + 1, -1); - if (ret < 0) { - close(_fd_server); - throw std::runtime_error("poll failed :("); - } - - if (_client_fds[0].revents & POLLIN) { - struct sockaddr_in client_addr; - socklen_t addrlen = sizeof(client_addr); - int client_fd = - accept(_fd_server, (struct sockaddr *)&client_addr, &addrlen); - if (client_fd < 0) { - _log->error("accept failed"); - continue; - } - struct pollfd client_pollfd; - client_pollfd.fd = client_fd; - client_pollfd.events = POLLIN; - _client_fds.push_back(client_pollfd); - ++nbr_client; - - // if (nbr_client) TODO do we need a max client probably not :D - } - for (int i = 1; i <= nbr_client;) { - if (_client_fds[i].revents & POLLIN) { - _handle_client(_client_fds[i].fd); - close(_client_fds[i].fd); - _client_fds[i] = _client_fds[nbr_client--]; - _client_fds.pop_back(); - } else - ++i; - } } } @@ -155,5 +124,4 @@ Server::~Server(void) { for (std::vector::iterator it = _client_fds.begin(); it != _client_fds.end(); it++) close(it->fd); - close(_fd_server); }