Refactor Client class: replace std::cout with logging calls for read errors and client disconnections, and remove unused header parsing methods

This commit is contained in:
whaffman 2025-09-22 22:33:17 +02:00
parent 90e70f2e82
commit 799cf250b7
2 changed files with 13 additions and 17 deletions

View File

@ -3,13 +3,10 @@
#include <webserv/client/Client.hpp> #include <webserv/client/Client.hpp>
#include <webserv/log/Log.hpp> #include <webserv/log/Log.hpp>
#include <iostream>
Client::Client(std::unique_ptr<Socket> socket, Server &server, const ServerConfig &server_config) Client::Client(std::unique_ptr<Socket> socket, Server &server, const ServerConfig &server_config)
: client_socket_(std::move(socket)), server_(std::ref(server)), server_config_(std::cref(server_config)), : client_socket_(std::move(socket)), server_(std::ref(server)), server_config_(std::cref(server_config)),
httpRequest_(std::make_unique<HttpRequest>(&server_config, this)) httpRequest_(std::make_unique<HttpRequest>(&server_config, this))
{ {
} }
Client::~Client() Client::~Client()
@ -18,33 +15,36 @@ Client::~Client()
server_.removeFromEpoll(*client_socket_); server_.removeFromEpoll(*client_socket_);
}; };
void Client::request() void Client::request()
{ {
char buffer[9] = {}; // NOLINT(cppcoreguidelines-avoid-c-arrays) char buffer[bufferSize_] = {}; // NOLINT(cppcoreguidelines-avoid-c-arrays)
ssize_t bytesRead = ssize_t bytesRead =
client_socket_->recv(buffer, sizeof(buffer) - 1); // NOLINT(cppcoreguidelines-pro-bounds-array-to-pointer-decay) client_socket_->recv(buffer, sizeof(buffer) - 1); // NOLINT(cppcoreguidelines-pro-bounds-array-to-pointer-decay)
if (bytesRead < 0) if (bytesRead < 0)
{ {
perror("Read error"); Log::error("Read error");
return; return;
} }
if (bytesRead == 0) if (bytesRead == 0)
{ {
std::cout << "Client disconnected, fd: " << client_socket_->getFd() << '\n'; Log::info("Client disconnected, fd: " + std::to_string(client_socket_->getFd()));
return; return;
} }
buffer[bytesRead] = '\0'; // NOLINT(cppcoreguidelines-pro-bounds-constant-array-index) buffer[bytesRead] = '\0'; // NOLINT(cppcoreguidelines-pro-bounds-constant-array-index)
httpRequest_->receiveData(buffer, static_cast<size_t>(bytesRead)); httpRequest_->receiveData(buffer, static_cast<size_t>(bytesRead));
if(httpRequest_->getState() == HttpRequest::State::Complete) { if (httpRequest_->getState() == HttpRequest::State::Complete)
Log::info("Received complete request:\n" + httpRequest_->getHeaders() + httpRequest_->getBody() + "\n=== FULL REQUEST FINISHED\n"); {
Log::info("Received complete request:\n" + httpRequest_->getHeaders() + httpRequest_->getBody() +
"\n=== FULL REQUEST FINISHED\n");
server_.responseReady(client_socket_->getFd()); server_.responseReady(client_socket_->getFd());
httpRequest_->reset(); httpRequest_->reset();
} }
else { else
Log::debug("Received partial request:\n" + httpRequest_->getHeaders() + httpRequest_->getBody() + "\n=== PARTIAL REQUEST\n"); {
Log::debug("Received partial request:\n" + httpRequest_->getHeaders() + httpRequest_->getBody() +
"\n=== PARTIAL REQUEST\n");
} }
} }

View File

@ -25,12 +25,8 @@ class Client
[[nodiscard]] std::string getResponse() const; [[nodiscard]] std::string getResponse() const;
private: private:
constexpr static size_t bufferSize_ = 4096;
std::unique_ptr<HttpRequest> httpRequest_ = nullptr; std::unique_ptr<HttpRequest> httpRequest_ = nullptr;
int parseHeaderforContentLength(const std::string &request);
// int contentLength_{-1};
// std::string requestBuffer_;
// std::string header_;
// std::string content_;
std::unique_ptr<Socket> client_socket_; std::unique_ptr<Socket> client_socket_;
const Server &server_; const Server &server_;
const ServerConfig &server_config_; const ServerConfig &server_config_;