abstract common tcp operations to a base class

This commit is contained in:
2026-07-18 22:36:01 -05:00
parent aa007a3130
commit 001bd8e629
8 changed files with 216 additions and 41 deletions

View File

@@ -1,7 +1,7 @@
#include "TcpClient.hpp"
TcpClient::TcpClient(ConfigService* config, LoggerService* logger) : config_(config), logger_(logger) {
TcpClient::TcpClient(ConfigService* config, LoggerService* logger) : TcpBase(logger) {
if(!(config->getConfig<ClientConfig>("TcpClient", "main", &configuration_))) {
logger_->log("TcpClient", LogFlag::Error, "Failed to get configuration");
@@ -60,33 +60,39 @@ ErrorCode TcpClient::init() {
close(socketFd);
return ErrorCode::Error;
}
std::string message = "placeholder";
while(!message.empty()) {
logger_->log("TcpClient", LogFlag::Debug, "Enter message...");
std::getline(std::cin, message);
// send data buffer to server
memset(buffer, 0x67, sizeof(buffer));
sendBytes = send(socketFd, buffer, sizeof(buffer), 0);
if(sendBytes < 0) {
logger_->log("TcpClient", LogFlag::Error, "Unable to send to server.");
close(socketFd);
return ErrorCode::Error;
// send data buffer to server
sendBytes = tcpSend(socketFd, message.c_str(), message.size());
if(sendBytes < 0) {
logger_->log("TcpClient", LogFlag::Error, "Unable to send to server.");
close(socketFd);
return ErrorCode::Error;
}
logger_->log("TcpClient", LogFlag::Debug, "Sent {} bytes to the server.", sendBytes);
// listen for receive from the server
memset(buffer, 0x00, sizeof(buffer));
receiveBytes = tcpRead(socketFd, buffer, sizeof(buffer)); // TODO: this currently blocks forever, add timeout
// we expect a response based on the server design, something went wrong otherwise
if(receiveBytes < 0) {
logger_->log("TcpClient", LogFlag::Error, "Unable to receive from server.");
return ErrorCode::Error;
} else if(receiveBytes == 0) {
logger_->log("TcpClient", LogFlag::Error, "Server closed the connection during receive.");
close(socketFd);
return ErrorCode::Error;
}
logger_->log("TcpClient", LogFlag::Debug, "Received {} bytes back from the server", receiveBytes);
}
logger_->log("TcpClient", LogFlag::Debug, "Sent {} bytes to the server.", sendBytes);
// listen for receive from the server
memset(buffer, 0x00, sizeof(buffer));
receiveBytes = recv(socketFd, buffer, sizeof(buffer), 0); // TODO: this currently blocks forever, add timeout
// we expect a response based on the server design, something went wrong otherwise
if(receiveBytes < 0) {
logger_->log("TcpClient", LogFlag::Error, "Unable to receive from server.");
return ErrorCode::Error;
} else if(receiveBytes == 0) {
logger_->log("TcpClient", LogFlag::Error, "Server closed the connection during receive.");
close(socketFd);
return ErrorCode::Error;
}
logger_->log("TcpClient", LogFlag::Debug, "Received {} bytes back from the server", receiveBytes);
close(socketFd);

View File

@@ -11,9 +11,10 @@
#include "common/config/ConfigService.hpp"
#include "common/LoggerService.hpp"
#include "common/ErrorCodes.hpp"
#include "common/TcpBase.hpp"
#include "config/ClientConfig.hpp"
class TcpClient {
class TcpClient : TcpBase {
public:
@@ -24,8 +25,6 @@ private:
ErrorCode init();
LoggerService* logger_;
ConfigService* config_;
ClientParams configuration_;
};