abstract common tcp operations to a base class
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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_;
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user