From a8af683643673f548b016692464b1f835004f28f Mon Sep 17 00:00:00 2001 From: orignal Date: Tue, 27 Feb 2024 12:33:07 -0500 Subject: [PATCH] renamed steady to monotonic --- libi2pd/I2NPProtocol.cpp | 2 +- libi2pd/RouterContext.cpp | 4 ++-- libi2pd/RouterContext.h | 3 +-- libi2pd/Timestamp.cpp | 16 ++++++++++++++-- libi2pd/Timestamp.h | 8 +++++--- libi2pd/TunnelPool.cpp | 5 +---- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/libi2pd/I2NPProtocol.cpp b/libi2pd/I2NPProtocol.cpp index e687f39c..bea3f93f 100644 --- a/libi2pd/I2NPProtocol.cpp +++ b/libi2pd/I2NPProtocol.cpp @@ -120,7 +120,7 @@ namespace i2p auto m = NewI2NPShortMessage (); uint8_t * buf = m->GetPayload (); htobe32buf (buf + TUNNEL_TEST_MSGID_OFFSET, msgID); - htobe64buf (buf + TUNNEL_TEST_TIMESTAMP_OFFSET, i2p::util::GetSteadyMicroseconds ()); + htobe64buf (buf + TUNNEL_TEST_TIMESTAMP_OFFSET, i2p::util::GetMonotonicMicroseconds ()); m->len += TUNNEL_TEST_SIZE; m->FillI2NPMessageHeader (eI2NPTunnelTest); return m; diff --git a/libi2pd/RouterContext.cpp b/libi2pd/RouterContext.cpp index bf683b8e..3eb6ffbf 100644 --- a/libi2pd/RouterContext.cpp +++ b/libi2pd/RouterContext.cpp @@ -40,7 +40,7 @@ namespace i2p void RouterContext::Init () { srand (i2p::util::GetMillisecondsSinceEpoch () % 1000); - m_StartupTime = std::chrono::steady_clock::now(); + m_StartupTime = i2p::util::GetMonotonicSeconds (); if (!Load ()) CreateNewRouter (); @@ -1236,7 +1236,7 @@ namespace i2p uint32_t RouterContext::GetUptime () const { - return std::chrono::duration_cast (std::chrono::steady_clock::now() - m_StartupTime).count (); + return i2p::util::GetMonotonicSeconds () - m_StartupTime; } bool RouterContext::Decrypt (const uint8_t * encrypted, uint8_t * data, i2p::data::CryptoKeyType preferredCrypto) const diff --git a/libi2pd/RouterContext.h b/libi2pd/RouterContext.h index 062c187d..941974b2 100644 --- a/libi2pd/RouterContext.h +++ b/libi2pd/RouterContext.h @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include "Identity.h" @@ -241,7 +240,7 @@ namespace garlic std::shared_ptr m_ECIESSession; uint64_t m_LastUpdateTime; // in seconds bool m_AcceptsTunnels, m_IsFloodfill; - std::chrono::time_point m_StartupTime; + uint64_t m_StartupTime; // monotonic seconds uint64_t m_BandwidthLimit; // allowed bandwidth int m_ShareRatio; RouterStatus m_Status, m_StatusV6; diff --git a/libi2pd/Timestamp.cpp b/libi2pd/Timestamp.cpp index 27e3a619..f13efe68 100644 --- a/libi2pd/Timestamp.cpp +++ b/libi2pd/Timestamp.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2013-2022, The PurpleI2P Project +* Copyright (c) 2013-2024, The PurpleI2P Project * * This file is part of Purple i2pd project and licensed under BSD3 * @@ -232,12 +232,24 @@ namespace util return GetLocalHoursSinceEpoch () + g_TimeOffset/3600; } - uint64_t GetSteadyMicroseconds() + uint64_t GetMonotonicMicroseconds() { return std::chrono::duration_cast( std::chrono::steady_clock::now().time_since_epoch()).count(); } + uint64_t GetMonotonicMilliseconds() + { + return std::chrono::duration_cast( + std::chrono::steady_clock::now().time_since_epoch()).count(); + } + + uint64_t GetMonotonicSeconds () + { + return std::chrono::duration_cast( + std::chrono::steady_clock::now().time_since_epoch()).count(); + } + void GetCurrentDate (char * date) { GetDateString (GetSecondsSinceEpoch (), date); diff --git a/libi2pd/Timestamp.h b/libi2pd/Timestamp.h index 6a925079..025908af 100644 --- a/libi2pd/Timestamp.h +++ b/libi2pd/Timestamp.h @@ -1,5 +1,5 @@ /* -* Copyright (c) 2013-2022, The PurpleI2P Project +* Copyright (c) 2013-2024, The PurpleI2P Project * * This file is part of Purple i2pd project and licensed under BSD3 * @@ -24,8 +24,10 @@ namespace util uint32_t GetMinutesSinceEpoch (); uint32_t GetHoursSinceEpoch (); - uint64_t GetSteadyMicroseconds(); - + uint64_t GetMonotonicMicroseconds (); + uint64_t GetMonotonicMilliseconds (); + uint64_t GetMonotonicSeconds (); + void GetCurrentDate (char * date); // returns date as YYYYMMDD string, 9 bytes void GetDateString (uint64_t timestamp, char * date); // timestamp is seconds since epoch, returns date as YYYYMMDD string, 9 bytes void AdjustTimeOffset (int64_t offset); // in seconds from current diff --git a/libi2pd/TunnelPool.cpp b/libi2pd/TunnelPool.cpp index e7cec270..c5dcf89e 100644 --- a/libi2pd/TunnelPool.cpp +++ b/libi2pd/TunnelPool.cpp @@ -456,9 +456,6 @@ namespace tunnel void TunnelPool::ProcessDeliveryStatus (std::shared_ptr msg) { - const uint8_t * buf = msg->GetPayload (); - uint32_t msgID = bufbe32toh (buf); - if (m_LocalDestination) m_LocalDestination->ProcessDeliveryStatusMessage (msg); else @@ -491,7 +488,7 @@ namespace tunnel } if (found) { - int dlt = (uint64_t)i2p::util::GetSteadyMicroseconds () - (int64_t)timestamp; + int dlt = (uint64_t)i2p::util::GetMonotonicMicroseconds () - (int64_t)timestamp; LogPrint (eLogDebug, "Tunnels: Test of ", msgID, " successful. ", dlt, " microseconds"); if (dlt < 0) dlt = 0; // should not happen int numHops = 0;