#include "tcp.hpp" #include #include int main() { spdlog::set_level(spdlog::level::debug); tcp::NonBlockingServer server{{.port = 65432}}; if (auto res = server.start_listening(); !res) { spdlog::error("Failed to start server: {}", res.error()); return 1; } spdlog::info("Server started, waiting for connections..."); while (true) { while (!server.next_client_available()) ; if (auto res = server.accept_next_client(); !res) { spdlog::error("Failed to accept client: {}", res.error()); continue; } spdlog::info("Client connected"); std::array buffer; while (!server.data_available()) ; auto recvRes = server.recv(std::span(buffer)); if (!recvRes) { spdlog::error("Failed to receive data: {}", recvRes.error()); break; } spdlog::info("Received message: {}", std::string(reinterpret_cast(buffer.data()), recvRes.value())); const char* msg = "Hello, world!"; auto sendRes = server.send(std::as_bytes(std::span(msg, strlen(msg)))); if (!sendRes) { spdlog::error("Failed to send message: {}", sendRes.error()); } else { spdlog::info("Sent {} bytes", sendRes.value()); } server.disconnect(); } } // int main() { // spdlog::set_level(spdlog::level::debug); // // tcp::NonBlockingClient client; // // tcp::HostString host = {"localhost"}; // uint16_t port = 65432; // // spdlog::info("Connecting to {}:{}", host.data(), port); // // if (!client.connect(host, port)) std::terminate(); // // // int status = EINPROGRESS; // while (status == EINPROGRESS) { // auto statusRes = client.get_last_connection_status(); // if (!statusRes) std::terminate(); // status = statusRes.value(); // } // // char buffer[1024]; // // while (!client.data_available()) // ; // // auto recvRes = client.recv(std::span(buffer, sizeof(buffer))); // // if (!recvRes) { // std::terminate(); // } // // spdlog::info("Received {} bytes", recvRes.value()); // if (recvRes.value() > 0) { // spdlog::info("Received message: {}", // std::string(buffer, recvRes.value())); // } // // EINPROGRESS; // // const char* msg = "Hello, world!"; // auto sendRes = client.send(std::span(msg, // strlen(msg))); if (!sendRes) { // spdlog::error("Failed to send message"); // std::terminate(); // } // spdlog::info("Sent {} bytes", sendRes.value()); // client.disconnect(); // // return 0; // }