From a163d2faf26253fe6aef95c066125dc6f3d05ac4 Mon Sep 17 00:00:00 2001 From: Alex Date: Wed, 28 Feb 2018 21:15:30 +0700 Subject: [PATCH] Time experemental --- libi2pd/Timestamp.h | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/libi2pd/Timestamp.h b/libi2pd/Timestamp.h index 89b1f1dc..082f4eaf 100644 --- a/libi2pd/Timestamp.h +++ b/libi2pd/Timestamp.h @@ -10,6 +10,21 @@ namespace i2p { namespace util { + template auto getTime(void) + -> decltype(std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()).count ()) + + { + return std::chrono::duration_cast( + std::chrono::system_clock::now().time_since_epoch()).count (); + } + + template auto getTime(uint64_t offset) + -> decltype(getTime()){ + + bool Time_Correcting, Time_UseNTP; i2p::config::GetOption("time.correcting", Time_Correcting);i2p::config::GetOption("time.use_ntp", Time_UseNTP); + return (Time_Correcting || Time_UseNTP) ? getTime() + offset : getTime(); + } static int64_t g_TimeOffset = 0; // in seconds inline void setTimeOffset(int64_t ts){g_TimeOffset=ts;} @@ -20,22 +35,17 @@ namespace i2p inline uint64_t GetSecondsSinceEpoch () { - bool Time_Correcting, Time_UseNTP; i2p::config::GetOption("time.correcting", Time_Correcting);i2p::config::GetOption("time.use_ntp", Time_UseNTP); - - auto tmp_time = std::chrono::duration_cast( - std::chrono::system_clock::now().time_since_epoch()).count (); - - return (Time_Correcting || Time_UseNTP) ? tmp_time + i2p::util::g_TimeOffset : tmp_time; + return getTime(i2p::util::g_TimeOffset); } inline uint64_t GetMillisecondsSinceEpoch () { - return GetSecondsSinceEpoch()*1000; + return getTime(i2p::util::g_TimeOffset*1000); } inline uint32_t GetHoursSinceEpoch () { - return GetSecondsSinceEpoch()/120; + return getTime(i2p::util::g_TimeOffset/120); }