aboutsummaryrefslogtreecommitdiff
path: root/src/util/time.cpp
diff options
context:
space:
mode:
authorMarcoFalke <falke.marco@gmail.com>2019-05-18 17:44:39 -0400
committerMarcoFalke <falke.marco@gmail.com>2019-05-23 14:12:32 -0400
commitfa013664ae23d0682a195b9bded85bc19c99536e (patch)
treed9b4ecfc48d4f8889498e20d1ffe802cd09c56a3 /src/util/time.cpp
parent277abed604a81be8036458573d052eaa293b6cf8 (diff)
downloadbitcoin-fa013664ae23d0682a195b9bded85bc19c99536e.tar.xz
util: Add type safe GetTime
Diffstat (limited to 'src/util/time.cpp')
-rw-r--r--src/util/time.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/util/time.cpp b/src/util/time.cpp
index c0ede98701..2b202ae95f 100644
--- a/src/util/time.cpp
+++ b/src/util/time.cpp
@@ -1,5 +1,5 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
-// Copyright (c) 2009-2018 The Bitcoin Core developers
+// Copyright (c) 2009-2019 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
@@ -27,6 +27,20 @@ int64_t GetTime()
return now;
}
+template <typename T>
+T GetTime()
+{
+ const std::chrono::seconds mocktime{nMockTime.load(std::memory_order_relaxed)};
+
+ return std::chrono::duration_cast<T>(
+ mocktime.count() ?
+ mocktime :
+ std::chrono::microseconds{GetTimeMicros()});
+}
+template std::chrono::seconds GetTime();
+template std::chrono::milliseconds GetTime();
+template std::chrono::microseconds GetTime();
+
void SetMockTime(int64_t nMockTimeIn)
{
nMockTime.store(nMockTimeIn, std::memory_order_relaxed);