Changeset View
Changeset View
Standalone View
Standalone View
src/util/time.h
// Copyright (c) 2009-2010 Satoshi Nakamoto | // Copyright (c) 2009-2010 Satoshi Nakamoto | ||||
// Copyright (c) 2009-2015 The Bitcoin Core developers | // Copyright (c) 2009-2019 The Bitcoin Core developers | ||||
// Distributed under the MIT software license, see the accompanying | // Distributed under the MIT software license, see the accompanying | ||||
// file COPYING or http://www.opensource.org/licenses/mit-license.php. | // file COPYING or http://www.opensource.org/licenses/mit-license.php. | ||||
#ifndef BITCOIN_UTIL_TIME_H | #ifndef BITCOIN_UTIL_TIME_H | ||||
#define BITCOIN_UTIL_TIME_H | #define BITCOIN_UTIL_TIME_H | ||||
#include <chrono> | |||||
#include <cstdint> | #include <cstdint> | ||||
#include <string> | #include <string> | ||||
/** | /** | ||||
* GetTimeMicros() and GetTimeMillis() both return the system time, but in | * DEPRECATED | ||||
* different units. GetTime() returns the system time in seconds, but also | * Use either GetSystemTimeInSeconds (not mockable) or GetTime<T> (mockable) | ||||
* 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). | |||||
*/ | */ | ||||
int64_t GetTime(); | int64_t GetTime(); | ||||
/** Returns the system time (not mockable) */ | |||||
int64_t GetTimeMillis(); | int64_t GetTimeMillis(); | ||||
/** Returns the system time (not mockable) */ | |||||
int64_t GetTimeMicros(); | int64_t GetTimeMicros(); | ||||
/** Returns the system time (not mockable) */ | |||||
// Like GetTime(), but not mockable | // Like GetTime(), but not mockable | ||||
int64_t GetSystemTimeInSeconds(); | int64_t GetSystemTimeInSeconds(); | ||||
/** For testing. Set e.g. with the setmocktime rpc, or -mocktime argument */ | |||||
void SetMockTime(int64_t nMockTimeIn); | void SetMockTime(int64_t nMockTimeIn); | ||||
/** For testing */ | |||||
int64_t GetMockTime(); | int64_t GetMockTime(); | ||||
void MilliSleep(int64_t n); | 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. | * helper functions if possible. | ||||
*/ | */ | ||||
std::string FormatISO8601DateTime(int64_t nTime); | std::string FormatISO8601DateTime(int64_t nTime); | ||||
std::string FormatISO8601Date(int64_t nTime); | std::string FormatISO8601Date(int64_t nTime); | ||||
#endif // BITCOIN_UTIL_TIME_H | #endif // BITCOIN_UTIL_TIME_H |