diff options
author | MarcoFalke <falke.marco@gmail.com> | 2019-05-18 17:44:39 -0400 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2019-05-23 14:12:32 -0400 |
commit | fa013664ae23d0682a195b9bded85bc19c99536e (patch) | |
tree | d9b4ecfc48d4f8889498e20d1ffe802cd09c56a3 /src/util/time.cpp | |
parent | 277abed604a81be8036458573d052eaa293b6cf8 (diff) | |
download | bitcoin-fa013664ae23d0682a195b9bded85bc19c99536e.tar.xz |
util: Add type safe GetTime
Diffstat (limited to 'src/util/time.cpp')
-rw-r--r-- | src/util/time.cpp | 16 |
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); |