48 std::is_same_v<ErrorType, std::monostate>, SimpleHandler,
67 -> asio::awaitable<nlohmann::json> {
68 ParamsType typed_params{};
70 if (params.has_value()) {
71 typed_params = params.value().get<ParamsType>();
73 }
catch (
const nlohmann::json::exception& ex) {
74 throw std::runtime_error(
75 "Failed to parse parameters: " + std::string(ex.what()));
78 if constexpr (std::is_same_v<ErrorType, std::monostate>) {
79 if constexpr (std::is_void_v<ResultType>) {
80 co_await handler_(typed_params);
81 co_return nlohmann::json();
83 ResultType result =
co_await handler_(typed_params);
84 co_return nlohmann::json(result);
87 auto result =
co_await handler_(typed_params);
89 if constexpr (std::is_void_v<ResultType>) {
90 co_return nlohmann::json();
92 co_return nlohmann::json(*result);