diff options
| author | MarcoFalke <[email protected]> | 2019-05-18 17:44:39 -0400 |
|---|---|---|
| committer | MarcoFalke <[email protected]> | 2019-05-23 14:12:32 -0400 |
| commit | fa013664ae23d0682a195b9bded85bc19c99536e (patch) | |
| tree | d9b4ecfc48d4f8889498e20d1ffe802cd09c56a3 /src/util/time.h | |
| parent | Merge #15922: doc: Explain how to pass in non-fundamental types into functions (diff) | |
| download | discoin-fa013664ae23d0682a195b9bded85bc19c99536e.tar.xz discoin-fa013664ae23d0682a195b9bded85bc19c99536e.zip | |
util: Add type safe GetTime
Diffstat (limited to 'src/util/time.h')
| -rw-r--r-- | src/util/time.h | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/src/util/time.h b/src/util/time.h index 68de1c156..e4f999677 100644 --- a/src/util/time.h +++ b/src/util/time.h @@ -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. @@ -8,27 +8,34 @@ #include <stdint.h> #include <string> +#include <chrono> /** - * GetTimeMicros() and GetTimeMillis() both return the system time, but in - * different units. GetTime() returns the system time in seconds, but also - * supports mocktime, where the time can be specified by the user, eg for - * testing (eg with the setmocktime rpc, or -mocktime argument). - * - * TODO: Rework these functions to be type-safe (so that we don't inadvertently - * compare numbers with different units, or compare a mocktime to system time). + * DEPRECATED + * Use either GetSystemTimeInSeconds (not mockable) or GetTime<T> (mockable) */ - int64_t GetTime(); + +/** Returns the system time (not mockable) */ int64_t GetTimeMillis(); +/** Returns the system time (not mockable) */ int64_t GetTimeMicros(); +/** Returns the system time (not mockable) */ int64_t GetSystemTimeInSeconds(); // Like GetTime(), but not mockable + +/** For testing. Set e.g. with the setmocktime rpc, or -mocktime argument */ void SetMockTime(int64_t nMockTimeIn); +/** For testing */ int64_t GetMockTime(); + void MilliSleep(int64_t n); +/** Return system time (or mocked time, if set) */ +template <typename T> +T GetTime(); + /** - * ISO 8601 formatting is preferred. Use the FormatISO8601{DateTime,Date,Time} + * ISO 8601 formatting is preferred. Use the FormatISO8601{DateTime,Date} * helper functions if possible. */ std::string FormatISO8601DateTime(int64_t nTime); |