From 27290c54de3b71549dfabcee9d12db5c0e7d820b Mon Sep 17 00:00:00 2001 From: ambigipathyv Date: Fri, 15 Mar 2024 15:55:44 +0100 Subject: [PATCH] Testing threads with http server --- bakanet/src/bakanet/http/http_server.cpp | 24 ++++++++++++------------ bakanet/src/bakanet/http/http_server.h | 8 +++++--- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/bakanet/src/bakanet/http/http_server.cpp b/bakanet/src/bakanet/http/http_server.cpp index 1ae2731..bd4e959 100755 --- a/bakanet/src/bakanet/http/http_server.cpp +++ b/bakanet/src/bakanet/http/http_server.cpp @@ -10,23 +10,23 @@ namespace Bk::Net { bool running = socket->init() && socket->start(5); while (running) { - Connection conn = socket->ack(); - if(conn >= 0) - { - route_request(conn, recv_request(conn)); - closesocket(conn); - } - + auto conn = socket->ack(); + + threads.emplace_back(std::thread([&](Socket& conn) + { + log("Caca") + route_request(conn, recv_request(conn)); + }, std::ref(*conn))); } } - HttpRequest HttpServer::recv_request(Connection conn) + HttpRequest HttpServer::recv_request(Socket& conn) { Packet req; bool reading = true; while(reading) { - auto data = socket->obtain(conn, 1024); + auto data = conn.obtain(1024); int size = data.size(); log("SIZE " << data.size()) req.append_data(data); @@ -37,15 +37,15 @@ namespace Bk::Net { return HttpRequest("", "", ""); } - void HttpServer::send_reponse(Connection conn, HttpReponse res) + void HttpServer::send_reponse(Socket& conn, HttpReponse res) { Packet res_packet; std::string str_res = res.to_string(); res_packet.push(str_res.c_str(), str_res.length()); - socket->emit(conn, res_packet.payload); + conn.emit(res_packet.payload); } - void HttpServer::route_request(Connection conn, HttpRequest req) + void HttpServer::route_request(Socket& conn, HttpRequest req) { log("to string") log(req.to_string()) diff --git a/bakanet/src/bakanet/http/http_server.h b/bakanet/src/bakanet/http/http_server.h index 3d1658b..385881e 100755 --- a/bakanet/src/bakanet/http/http_server.h +++ b/bakanet/src/bakanet/http/http_server.h @@ -9,6 +9,7 @@ namespace Bk::Net { class HttpServer { + using ThreadPool = std::vector; using RequestHandler = std::function; public: HttpServer(IpAddress ip, int port); @@ -18,9 +19,10 @@ namespace Bk::Net { private: std::unique_ptr socket; std::unordered_map req_mapper; + ThreadPool threads; - HttpRequest recv_request(Connection conn); - void send_reponse(Connection conn, HttpReponse res); - void route_request(Connection conn, HttpRequest req); + HttpRequest recv_request(Socket& conn); + void send_reponse(Socket& conn, HttpReponse res); + void route_request(Socket& conn, HttpRequest req); }; } \ No newline at end of file