46 lines
1.2 KiB
C++
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
|