76 lines
1.6 KiB
C++
76 lines
1.6 KiB
C++
#ifndef seafire__server__hxx_
|
|
#define seafire__server__hxx_
|
|
|
|
#include <seafire/server/common-error.hxx>
|
|
#include <seafire/server/configuration.hxx>
|
|
#include <seafire/server/counter.hxx>
|
|
#include <seafire/server/request-handler.hxx>
|
|
#include <seafire/server/supervisor.hxx>
|
|
|
|
#include <seafire/common/diagnostics.hxx>
|
|
|
|
#include <seafire/common/io/acceptor.hxx>
|
|
|
|
namespace seafire::server
|
|
{
|
|
|
|
class request_t;
|
|
class response_t;
|
|
class transaction_t;
|
|
|
|
class server_t
|
|
: public error_handler_t
|
|
{
|
|
public:
|
|
/// Acceptor set type.
|
|
///
|
|
using acceptor_set_t = std::set<std::unique_ptr<common::io::acceptor_t>>;
|
|
|
|
server_t(common::diagnostics_t&,
|
|
configuration_t,
|
|
acceptor_set_t,
|
|
request_handler_t);
|
|
|
|
server_t(server_t const&) = delete;
|
|
server_t(server_t&&) = delete;
|
|
|
|
void
|
|
start();
|
|
|
|
void
|
|
stop(bool = false);
|
|
|
|
server_t& operator=(server_t const&) = delete;
|
|
server_t& operator=(server_t&&) = delete;
|
|
|
|
protected:
|
|
void
|
|
on_error(request_t&, response_t&, common_error_t) override;
|
|
|
|
void
|
|
on_exception(request_t&, response_t&) noexcept override;
|
|
|
|
// fixme: void shutdown_stream();
|
|
|
|
private:
|
|
common::diagnostics_t::proxy_t
|
|
trace();
|
|
|
|
void
|
|
init_accept(common::io::acceptor_t&);
|
|
|
|
void
|
|
on_accept(common::io::acceptor_t&, std::error_code const&);
|
|
|
|
common::diagnostics_t& diagnostics_;
|
|
configuration_t configuration_;
|
|
acceptor_set_t const acceptors_;
|
|
request_handler_t handler_;
|
|
supervisor_t supervisor_;
|
|
|
|
};
|
|
|
|
} // namespace seafire::server
|
|
|
|
#endif
|