// GNU Lesser General Public License v3.0 // Copyright (c) 2025 Bart Beumer // // This program is free software; you can redistribute it and/or modify it // under the terms of the GNU Lesser General Public License v3.0 as published by // the Free Software Foundation. // #pragma once #include #include #include #include #include #include #include namespace bmrshared::web { namespace detail { class internal_server; } class response_promise; class request_handler_interface; class server final { public: using address_type = boost::asio::ip::address; using request_type = boost::beast::http::request; server(boost::asio::io_context& io_context, const boost::asio::ip::tcp::endpoint& listen_endpoint, std::chrono::seconds incoming_request_timeout, uint64_t request_body_limit, unsigned int max_simultaneous_requests, request_handler_interface& handler); ~server(); private: std::shared_ptr m_internal; }; } // namespace bmrshared::web