#pragma once // Project Includes #include "file_descriptor.hpp" #include "http.hpp" #include "server.hpp" #include "uring_context.hpp" // Standard Library Includes #include #include #include // Third-Party Library Includes #include #include #include struct Client { FileDescriptor m_fd; UringContext &m_uring_ctx; std::vector m_buffer; RequestList m_completed_requests; HttpRequestParser m_parser; bool m_disconnect_requested; Client() = delete; Client(FileDescriptor fd, UringContext &uring_ctx) : m_fd(std::move(fd)), m_uring_ctx(uring_ctx), m_buffer(std::vector(4096)), m_disconnect_requested(false) { } }; /** * @brief Asynchronously handles a client connection. * * @param client_fd * @param ctx * @param uring_ctx * @return kev::task */ kev::task handle_connection_coroutine(FileDescriptor client_fd, ServerContext &ctx, UringContext &uring_ctx);