From facfce37f62ec8a4451cf27fe6dac15519d914bf Mon Sep 17 00:00:00 2001 From: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz> Date: Fri, 20 Mar 2026 11:24:34 +0100 Subject: [PATCH] util: Add NodeClock::epoch alias A default constructed time_point is the epoch, by definition. Existing code uses a default constructed (or explicitly constructed with a zero duration) chrono type to mean epoch. New code can now use NodeClock::epoch as an alias. --- src/util/time.cpp | 2 ++ src/util/time.h | 1 + 2 files changed, 3 insertions(+) diff --git a/src/util/time.cpp b/src/util/time.cpp index 9e0715e5250..1466dc01f85 100644 --- a/src/util/time.cpp +++ b/src/util/time.cpp @@ -27,6 +27,8 @@ static std::atomic g_mock_time{}; //!< For testing std::atomic g_used_system_time{false}; static std::atomic g_mock_steady_time{}; //!< For testing +static_assert(NodeClock::epoch.time_since_epoch().count() == 0); + NodeClock::time_point NodeClock::now() noexcept { const auto mocktime{g_mock_time.load(std::memory_order_relaxed)}; diff --git a/src/util/time.h b/src/util/time.h index 30d363bb612..15d00e80843 100644 --- a/src/util/time.h +++ b/src/util/time.h @@ -23,6 +23,7 @@ struct NodeClock : public std::chrono::system_clock { static time_point now() noexcept; static std::time_t to_time_t(const time_point&) = delete; // unused static time_point from_time_t(std::time_t) = delete; // unused + static constexpr time_point epoch{}; }; using NodeSeconds = std::chrono::time_point;