#include #include #include #include struct SomeStruct { static_assert(utempl::OpenStruct()); utempl::FieldAttribute> field; static_assert(utempl::CloseStruct()); }; struct SomeComponent : cserver::cli::StructWithAdder { using cserver::cli::StructWithAdder::StructWithAdder; }; struct SomeOtherComponent : public cserver::server::handlers::HttpHandlerBaseWithAdder { static constexpr utempl::ConstexprString kPath = "/v1/some/"; static constexpr utempl::ConstexprString kName = "name"; static constexpr utempl::ConstexprString kHandlerManagerName = "server"; SomeComponent& some; explicit constexpr SomeOtherComponent(auto& context) : HttpHandlerBaseWithAdder(context), some(context.template FindComponent<"component">()) {}; inline auto HandleRequestThrow(const cserver::server::http::HttpRequest&) -> cserver::Task { co_return cserver::server::http::HttpResponse{.body = this->some.field}; }; }; // clang-format off // NOLINTBEGIN auto main(int argc, const char** argv) -> int { cserver::ServiceContextBuilder{} .AppendConfigParam<"threads", 8>() .AppendConfigParam<"logging", cserver::ConstexprConfig{} .Append<"level">(cserver::LoggingLevel::kTrace)>() .AppendConfigParam<"cliArgs", utempl::ConstexprString{"cliManager"}>() .AppendConfigParam<"server", cserver::ConstexprConfig{} .Append<"taskProcessor">(utempl::ConstexprString{"basicTaskProcessor"}) .Append<"port">(55555)>() .Append() .Append>() .Append>() .Append() .Append() .Sort() .Run(argc, argv); }; // NOLINTEND // clang-format on