network-experiment/bmrshared-web/include/bmrshared/server.hpp

46 lines
1.2 KiB
C++

// GNU Lesser General Public License v3.0
// Copyright (c) 2025 Bart Beumer <bart@4beumer.nl>
//
// 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 <boost/asio/io_context.hpp>
#include <boost/asio/ip/address.hpp>
#include <boost/asio/ip/tcp.hpp>
#include <boost/beast/http/message.hpp>
#include <boost/beast/http/string_body.hpp>
#include <chrono>
#include <memory>
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<boost::beast::http::string_body>;
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<detail::internal_server> m_internal;
};
} // namespace bmrshared::web