From 4caf57c82e78255043c308d3a3762646dfd52924 Mon Sep 17 00:00:00 2001 From: Bartosz Wieczorek Date: Mon, 17 Nov 2025 18:24:57 +0100 Subject: [PATCH] fix tl expected issues --- libs/json_helpers.cpp | 15 +++------------ libs/ranczo-io/utils/asio_watchdog.hpp | 2 +- services/floorheat_svc/thermometer.cpp | 6 +++--- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/libs/json_helpers.cpp b/libs/json_helpers.cpp index 4552e20..138ed8c 100644 --- a/libs/json_helpers.cpp +++ b/libs/json_helpers.cpp @@ -1,19 +1,10 @@ #include #include +#include std::optional ranczo::json::as_number(const boost::json::value &v) { - if(v.is_double()) - return v.as_double(); - if(v.is_int64()) - return static_cast< double >(v.as_int64()); - if(v.is_uint64()) - return static_cast< double >(v.as_uint64()); - if(v.is_string()) { - const auto & s = v.as_string(); - double out{}; - if(auto res = std::from_chars(s.data(), s.data() + s.size(), out); res.ec == std::errc{}) - return out; - } + if (auto p = boost::json::try_value_to(v)) + return *p; return std::nullopt; } diff --git a/libs/ranczo-io/utils/asio_watchdog.hpp b/libs/ranczo-io/utils/asio_watchdog.hpp index d4d10f9..f832029 100644 --- a/libs/ranczo-io/utils/asio_watchdog.hpp +++ b/libs/ranczo-io/utils/asio_watchdog.hpp @@ -83,7 +83,7 @@ class SimpleTimer { ASYNC_CHECK(on_tick_()); } catch(const std::exception & e) { spdlog::error("on_tick threw exception: {}", e.what()); - co_return std::unexpected{ boost::system::error_code{} }; + co_return unexpected{ boost::system::error_code{} }; } } diff --git a/services/floorheat_svc/thermometer.cpp b/services/floorheat_svc/thermometer.cpp index 96a70f2..a99c1d3 100644 --- a/services/floorheat_svc/thermometer.cpp +++ b/services/floorheat_svc/thermometer.cpp @@ -59,17 +59,17 @@ awaitable_expected< void > MqttThermometer::listen() noexcept { expected< Thermometer::ThermometerData > MqttThermometer::to_thermometer_data(const boost::json::value & v) { const auto * obj = v.if_object(); if(!obj) { - return std::unexpected{make_error_code(std::errc::invalid_argument)}; + return unexpected{make_error_code(std::errc::invalid_argument)}; } // ---- value (required) ---- const auto * pv = obj->if_contains("value"); if(!pv) { - return std::unexpected{make_error_code(std::errc::invalid_argument)}; + return unexpected{make_error_code(std::errc::invalid_argument)}; } auto val = ranczo::json::as_number(*pv); if(!val) { - return std::unexpected{make_error_code(std::errc::invalid_argument)}; + return unexpected{make_error_code(std::errc::invalid_argument)}; } // ---- timestamp (optional; default: now()) ----