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:
parent
90e70f2e82
commit
799cf250b7
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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_;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user