4using namespace std::chrono_literals;
8#include <asio/experimental/awaitable_operators.hpp>
9using namespace asio::experimental::awaitable_operators;
11#include <spdlog/spdlog.h>
55 asio::awaitable<void>
listen();
76 template<
class F,
class ...
Args>
101 asio::awaitable<void>
close();
124 asio::awaitable<void>
readData(asio::ip::tcp::socket &
sock, std::chrono::steady_clock::time_point &
deadline);
137 asio::awaitable<void>
writeData(asio::ip::tcp::socket &
sock, std::string message);
140 asio::io_context & _io_context;
141 asio::strand<asio::io_context::executor_type> _strand;
144 asio::ip::tcp::acceptor _acceptor;
147 std::chrono::milliseconds _idle_interval;
A class representing a route handler function.
Definition route.hpp:31
A class representing a route key, which is a combination of a HTTP method and a URL.
Definition route_key.hpp:20
A class representing a router for handling HTTP requests.
Definition route.hpp:83
void addRoute(RouteKey route, RouteHandlerFunc handler)
Definition route.cpp:153
A class representing a server for handling HTTP requests.
Definition server.hpp:38
asio::awaitable< void > listen()
Definition server.cpp:22
asio::awaitable< void > handleConnection(asio::ip::tcp::socket sock)
Definition server.cpp:46
asio::awaitable< void > writeData(asio::ip::tcp::socket &sock, std::string message)
Asynchronously writes data to a TCP socket.
Definition server.cpp:169
asio::awaitable< void > close()
Closes the server gracefully.
Definition server.cpp:14
void addRoute(RouteKey route, F &&handler, Args &&... binded_args)
Adds a route to the server with a specified HTTP method and path.
Definition server.hpp:77
asio::awaitable< void > readData(asio::ip::tcp::socket &sock, std::chrono::steady_clock::time_point &deadline)
Reads data from the given socket and processes incoming HTTP requests.
Definition server.cpp:57
void addRoute(RouteKey route, F &&handler)
Adds a route to the server with a specified HTTP method and path.
Definition server.hpp:63
void setIdleInterval(std::chrono::milliseconds idle_interval)
Set the idle interval after which the server will close the connection.
Definition server.cpp:41
absl::flat_hash_map< std::string, RouteArg > QueryArgsList
Definition route.hpp:23
std::function< asio::awaitable< dcn::http::Response >(const dcn::http::Request &, std::vector< RouteArg >, QueryArgsList)> HandlerDefinition
Type representing a route handler function.
Definition server.hpp:22