Bitcoin Core  23.99.0
P2P Digital Currency
Classes | Typedefs | Functions
time.h File Reference
#include <compat.h>
#include <chrono>
#include <stdint.h>
#include <string>
Include dependency graph for time.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  NodeClock
 Mockable clock in the context of tests, otherwise the system clock. More...
 

Typedefs

using NodeSeconds = std::chrono::time_point< NodeClock, std::chrono::seconds >
 
using SteadySeconds = std::chrono::time_point< std::chrono::steady_clock, std::chrono::seconds >
 
using SteadyMilliseconds = std::chrono::time_point< std::chrono::steady_clock, std::chrono::milliseconds >
 
using SteadyMicroseconds = std::chrono::time_point< std::chrono::steady_clock, std::chrono::microseconds >
 
using SecondsDouble = std::chrono::duration< double, std::chrono::seconds::period >
 

Functions

void UninterruptibleSleep (const std::chrono::microseconds &n)
 
template<typename Duration , typename Timepoint >
constexpr auto TicksSinceEpoch (Timepoint t)
 Helper to count the seconds of a duration/time_point. More...
 
constexpr int64_t count_seconds (std::chrono::seconds t)
 
constexpr int64_t count_milliseconds (std::chrono::milliseconds t)
 
constexpr int64_t count_microseconds (std::chrono::microseconds t)
 
double CountSecondsDouble (SecondsDouble t)
 Helper to count the seconds in any std::chrono::duration type. More...
 
int64_t GetTime ()
 DEPRECATED Use either ClockType::now() or Now<TimePointType>() if a cast is needed. More...
 
int64_t GetTimeMillis ()
 Returns the system time (not mockable) More...
 
int64_t GetTimeMicros ()
 Returns the system time (not mockable) More...
 
void SetMockTime (int64_t nMockTimeIn)
 DEPRECATED Use SetMockTime with chrono type. More...
 
void SetMockTime (std::chrono::seconds mock_time_in)
 For testing. More...
 
std::chrono::seconds GetMockTime ()
 For testing. More...
 
template<typename T >
Now ()
 Return the current time point cast to the given precicion. More...
 
std::string FormatISO8601DateTime (int64_t nTime)
 ISO 8601 formatting is preferred. More...
 
std::string FormatISO8601Date (int64_t nTime)
 
int64_t ParseISO8601DateTime (const std::string &str)
 
struct timeval MillisToTimeval (int64_t nTimeout)
 Convert milliseconds to a struct timeval for e.g. More...
 
struct timeval MillisToTimeval (std::chrono::milliseconds ms)
 Convert milliseconds to a struct timeval for e.g. More...
 
bool ChronoSanityCheck ()
 Sanity check epoch match normal Unix epoch. More...
 

Typedef Documentation

◆ NodeSeconds

using NodeSeconds = std::chrono::time_point<NodeClock, std::chrono::seconds>

Definition at line 25 of file time.h.

◆ SecondsDouble

using SecondsDouble = std::chrono::duration<double, std::chrono::seconds::period>

Definition at line 52 of file time.h.

◆ SteadyMicroseconds

using SteadyMicroseconds = std::chrono::time_point<std::chrono::steady_clock, std::chrono::microseconds>

Definition at line 29 of file time.h.

◆ SteadyMilliseconds

using SteadyMilliseconds = std::chrono::time_point<std::chrono::steady_clock, std::chrono::milliseconds>

Definition at line 28 of file time.h.

◆ SteadySeconds

using SteadySeconds = std::chrono::time_point<std::chrono::steady_clock, std::chrono::seconds>

Definition at line 27 of file time.h.

Function Documentation

◆ ChronoSanityCheck()

bool ChronoSanityCheck ( )

Sanity check epoch match normal Unix epoch.

Definition at line 26 of file time.cpp.

Here is the caller graph for this function:

◆ count_microseconds()

constexpr int64_t count_microseconds ( std::chrono::microseconds  t)
constexpr

Definition at line 50 of file time.h.

Here is the caller graph for this function:

◆ count_milliseconds()

constexpr int64_t count_milliseconds ( std::chrono::milliseconds  t)
constexpr

Definition at line 49 of file time.h.

Here is the caller graph for this function:

◆ count_seconds()

constexpr int64_t count_seconds ( std::chrono::seconds  t)
constexpr

Definition at line 48 of file time.h.

Here is the caller graph for this function:

◆ CountSecondsDouble()

double CountSecondsDouble ( SecondsDouble  t)
inline

Helper to count the seconds in any std::chrono::duration type.

Definition at line 57 of file time.h.

Here is the caller graph for this function:

◆ FormatISO8601Date()

std::string FormatISO8601Date ( int64_t  nTime)

Definition at line 129 of file time.cpp.

Here is the caller graph for this function:

◆ FormatISO8601DateTime()

std::string FormatISO8601DateTime ( int64_t  nTime)

ISO 8601 formatting is preferred.

Use the FormatISO8601{DateTime,Date} helper functions if possible.

Definition at line 116 of file time.cpp.

Here is the caller graph for this function:

◆ GetMockTime()

std::chrono::seconds GetMockTime ( )

For testing.

Definition at line 99 of file time.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetTime()

int64_t GetTime ( )

DEPRECATED Use either ClockType::now() or Now<TimePointType>() if a cast is needed.

DEPRECATED, see GetTime.

ClockType is

  • std::chrono::steady_clock for steady time
  • std::chrono::system_clock for system time
  • NodeClock for mockable system time

Definition at line 99 of file time.h.

◆ GetTimeMicros()

int64_t GetTimeMicros ( )

Returns the system time (not mockable)

Definition at line 109 of file time.cpp.

Here is the caller graph for this function:

◆ GetTimeMillis()

int64_t GetTimeMillis ( )

Returns the system time (not mockable)

Definition at line 104 of file time.cpp.

Here is the caller graph for this function:

◆ MillisToTimeval() [1/2]

struct timeval MillisToTimeval ( int64_t  nTimeout)

Convert milliseconds to a struct timeval for e.g.

select.

Definition at line 156 of file time.cpp.

Here is the caller graph for this function:

◆ MillisToTimeval() [2/2]

struct timeval MillisToTimeval ( std::chrono::milliseconds  ms)

Convert milliseconds to a struct timeval for e.g.

select.

Definition at line 164 of file time.cpp.

Here is the call graph for this function:

◆ Now()

template<typename T >
T Now ( )

Return the current time point cast to the given precicion.

Only use this when an exact precicion is needed, otherwise use T::clock::now() directly.

Definition at line 93 of file time.h.

◆ ParseISO8601DateTime()

int64_t ParseISO8601DateTime ( const std::string &  str)

Definition at line 142 of file time.cpp.

Here is the caller graph for this function:

◆ SetMockTime() [1/2]

void SetMockTime ( int64_t  nMockTimeIn)

DEPRECATED Use SetMockTime with chrono type.

Parameters
[in]nMockTimeInTime in seconds.

Definition at line 88 of file time.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetMockTime() [2/2]

void SetMockTime ( std::chrono::seconds  mock_time_in)

For testing.

Set e.g. with the setmocktime rpc, or -mocktime argument

Definition at line 94 of file time.cpp.

Here is the call graph for this function:

◆ TicksSinceEpoch()

template<typename Duration , typename Timepoint >
constexpr auto TicksSinceEpoch ( Timepoint  t)
constexpr

Helper to count the seconds of a duration/time_point.

All durations/time_points should be using std::chrono and calling this should generally be avoided in code. Though, it is still preferred to an inline t.count() to protect against a reliance on the exact type of t.

This helper is used to convert durations/time_points before passing them over an interface that doesn't support std::chrono (e.g. RPC, debug log, or the GUI)

Definition at line 44 of file time.h.

◆ UninterruptibleSleep()

void UninterruptibleSleep ( const std::chrono::microseconds &  n)

Definition at line 22 of file time.cpp.

Here is the caller graph for this function: