Remove ServerSettings

This commit is contained in:
Andreas Tsouchlos 2025-04-19 14:11:50 +02:00
parent 47a2135093
commit 9582dbdc88
4 changed files with 28 additions and 32 deletions

View File

@ -8,8 +8,8 @@
int main() {
spdlog::set_level(spdlog::level::debug);
tcp::NonBlockingServer server{{.port = 65432}};
if (auto res = server.start_listening(); !res) {
tcp::NonBlockingServer server{};
if (auto res = server.start_listening(65432); !res) {
spdlog::error("Failed to start server: {}", res.error());
return 1;
}

View File

@ -53,16 +53,12 @@ namespace tcp {
//
NonBlockingServer::NonBlockingServer(ServerSettings settings)
: m_settings{settings}, m_serverAddress(get_local_address(settings.port)) {
}
NonBlockingServer::~NonBlockingServer() {
close_client_socket();
close_server_socket();
}
std::expected<void, int> NonBlockingServer::start_listening() {
std::expected<void, int> NonBlockingServer::start_listening(uint16_t port) {
/// Create socket
close_server_socket();
@ -72,8 +68,10 @@ std::expected<void, int> NonBlockingServer::start_listening() {
/// Bin socket and start listening
if (::bind(m_serverSocket, (struct sockaddr*)&m_serverAddress,
sizeof(m_serverAddress)) != 0) {
const struct sockaddr_in serverAddress = get_local_address(port);
if (::bind(m_serverSocket, (struct sockaddr*)&serverAddress,
sizeof(serverAddress)) != 0) {
spdlog::error("tcp::NonBlockingServer: bind() failed with errno={}",
errno);
close(m_serverSocket);

View File

@ -18,26 +18,24 @@ namespace tcp {
using HostString = std::array<char, 64>;
//
//
// Non blocking server
//
//
struct ServerSettings {
uint16_t port = 0;
};
class NonBlockingServer {
public:
NonBlockingServer(ServerSettings settings);
NonBlockingServer() = default;
NonBlockingServer(const NonBlockingServer&) = delete;
NonBlockingServer(NonBlockingServer&&) = delete;
NonBlockingServer& operator=(const NonBlockingServer&) = delete;
NonBlockingServer& operator=(NonBlockingServer&&) = delete;
~NonBlockingServer();
[[nodiscard]] std::expected<void, int> start_listening();
[[nodiscard]] std::expected<void, int> start_listening(uint16_t port);
bool next_client_available();
[[nodiscard]] std::expected<void, int> accept_next_client();

View File

@ -8,10 +8,10 @@
TEST(TcpServer, Accept) {
tcp::NonBlockingServer server{{.port = 1234}};
tcp::NonBlockingServer server;
tcp::NonBlockingClient client;
auto lisRes = server.start_listening();
auto lisRes = server.start_listening(1234);
EXPECT_FALSE(server.next_client_available());
@ -25,12 +25,12 @@ TEST(TcpServer, Accept) {
}
TEST(TcpServer, DataAvailable) {
tcp::NonBlockingServer server{{.port = 1234}};
tcp::NonBlockingServer server;
tcp::NonBlockingClient client;
EXPECT_FALSE(server.data_available());
auto lisRes = server.start_listening();
auto lisRes = server.start_listening(1234);
auto conRes = client.connect({"localhost"}, 1234);
auto accRes = server.accept_next_client();
@ -48,10 +48,10 @@ TEST(TcpServer, DataAvailable) {
}
TEST(TcpServer, GetClientIPAsString) {
tcp::NonBlockingServer server{{.port = 1234}};
tcp::NonBlockingServer server;
tcp::NonBlockingClient client;
auto lisRes = server.start_listening();
auto lisRes = server.start_listening(1234);
auto conRes = client.connect({"localhost"}, 1234);
auto accRes = server.accept_next_client();
auto ipRes = server.get_client_ip_as_string();
@ -61,7 +61,7 @@ TEST(TcpServer, GetClientIPAsString) {
}
TEST(TcpClient, Connect) {
tcp::NonBlockingServer server{{.port = 1234}};
tcp::NonBlockingServer server;
tcp::NonBlockingClient client;
/// Default connection status, i.e., before attempting connection
@ -80,7 +80,7 @@ TEST(TcpClient, Connect) {
/// Connection status when connection is acknowledged
auto lisRes = server.start_listening();
auto lisRes = server.start_listening(1234);
auto conRes2 = client.connect({"localhost"}, 1234);
@ -98,12 +98,12 @@ TEST(TcpClient, Connect) {
}
TEST(TcpClient, Reconnect) {
tcp::NonBlockingServer server1{{.port = 1234}};
tcp::NonBlockingServer server2{{.port = 2345}};
tcp::NonBlockingServer server1;
tcp::NonBlockingServer server2;
tcp::NonBlockingClient client;
auto lisRes1 = server1.start_listening();
auto lisRes2 = server2.start_listening();
auto lisRes1 = server1.start_listening(1234);
auto lisRes2 = server2.start_listening(2345);
auto conRes1 = client.connect({"localhost"}, 1234);
@ -119,12 +119,12 @@ TEST(TcpClient, Reconnect) {
}
TEST(TcpClient, DataAvailable) {
tcp::NonBlockingServer server{{.port = 1234}};
tcp::NonBlockingServer server;
tcp::NonBlockingClient client;
EXPECT_FALSE(client.data_available());
auto lisRes = server.start_listening();
auto lisRes = server.start_listening(1234);
auto conRes = client.connect({"localhost"}, 1234);
auto accRes = server.accept_next_client();
@ -145,10 +145,10 @@ TEST(TcpClient, DataAvailable) {
}
TEST(TcpClientServer, ClientSendServerReceive) {
tcp::NonBlockingServer server{{.port = 1234}};
tcp::NonBlockingServer server;
tcp::NonBlockingClient client;
auto lisRes = server.start_listening();
auto lisRes = server.start_listening(1234);
auto conRes = client.connect({"localhost"}, 1234);
auto accRes = server.accept_next_client();
@ -165,10 +165,10 @@ TEST(TcpClientServer, ClientSendServerReceive) {
}
TEST(TcpClientServer, ClientReceiveServerSend) {
tcp::NonBlockingServer server{{.port = 1234}};
tcp::NonBlockingServer server;
tcp::NonBlockingClient client;
auto lisRes = server.start_listening();
auto lisRes = server.start_listening(1234);
auto conRes = client.connect({"localhost"}, 1234);
auto accRes = server.accept_next_client();