module; #include export module routemon:srv; import :api; import :http.server; namespace routemon::srv { class handler { api::handler inner_; public: using outer_ctx = http::trace_id_ctx; using l0_ctx = http::routed_ctx; private: auto handle_process_gpx(l0_ctx ctx, http::readable_request r) -> net::awaitable; auto handle_sysinfo(l0_ctx ctx, http::readable_request r) -> net::awaitable; public: handler(api::handler&& inner); auto make_routes() -> http::route_tree>; }; export class server { handler handler_; http::server srv_; static auto make_global_middleware(config::http_server const& cfg) -> http::middleware_t; public: server( log::logger const& l, config::http_server const& cfg, locale::selector&& lsel, api::handler&& inner); auto spawn(net::io_context& ioc) -> void; }; } // namespace routemon::srv