Bitcoin Core 30.99.0
P2P Digital Currency
Classes | Typedefs | Functions
time.h File Reference
#include <chrono>
#include <cstdint>
#include <optional>
#include <string>
#include <string_view>
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...
 
struct  MockableSteadyClock
 Version of SteadyClock that is mockable in the context of tests (set the current value with SetMockTime), otherwise the system steady clock. More...
 

Typedefs

using NodeSeconds = std::chrono::time_point< NodeClock, std::chrono::seconds >
 
using SteadyClock = std::chrono::steady_clock
 
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 SystemClock = std::chrono::system_clock
 
using HoursDouble = std::chrono::duration< double, std::chrono::hours::period >
 
using SecondsDouble = std::chrono::duration< double, std::chrono::seconds::period >
 
using MillisecondsDouble = std::chrono::duration< double, std::chrono::milliseconds::period >
 

Functions

void UninterruptibleSleep (const std::chrono::microseconds &n)
 
template<typename Dur1 , typename Dur2 >
constexpr auto Ticks (Dur2 d)
 Helper to count the seconds of a duration/time_point. More...
 
template<typename Duration >
constexpr int64_t TicksSeconds (Duration d)
 
template<typename Duration , typename Timepoint >
constexpr auto TicksSinceEpoch (Timepoint t)
 
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)
 
int64_t GetTime ()
 DEPRECATED Use either ClockType::now() or Now<TimePointType>() if a cast is needed. More...
 
void SetMockTime (int64_t nMockTimeIn)
 DEPRECATED Use SetMockTime with chrono type. More...
 
void SetMockTime (std::chrono::seconds mock_time_in)
 For testing. More...
 
void SetMockTime (std::chrono::time_point< NodeClock, std::chrono::seconds > mock)
 
std::chrono::seconds GetMockTime ()
 For testing. More...
 
template<typename T >
Now ()
 Return the current time point cast to the given precision. More...
 
template<typename T >
GetTime ()
 DEPRECATED, see GetTime. More...
 
std::string FormatISO8601DateTime (int64_t nTime)
 ISO 8601 formatting is preferred. More...
 
std::string FormatISO8601Date (int64_t nTime)
 
std::optional< int64_t > ParseISO8601DateTime (std::string_view str)
 
std::string FormatRFC1123DateTime (int64_t nTime)
 RFC1123 formatting https://www.rfc-editor.org/rfc/rfc1123#section-5.2.14 Used in HTTP/1.1 responses. More...
 
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...
 

Typedef Documentation

◆ HoursDouble

using HoursDouble = std::chrono::duration<double, std::chrono::hours::period>

Definition at line 92 of file time.h.

◆ MillisecondsDouble

using MillisecondsDouble = std::chrono::duration<double, std::chrono::milliseconds::period>

Definition at line 94 of file time.h.

◆ 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 93 of file time.h.

◆ SteadyClock

using SteadyClock = std::chrono::steady_clock

Definition at line 27 of file time.h.

◆ SteadyMicroseconds

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

Definition at line 30 of file time.h.

◆ SteadyMilliseconds

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

Definition at line 29 of file time.h.

◆ SteadySeconds

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

Definition at line 28 of file time.h.

◆ SystemClock

using SystemClock = std::chrono::system_clock

Definition at line 32 of file time.h.

Function Documentation

◆ count_microseconds()

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

Definition at line 90 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 89 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 88 of file time.h.

Here is the caller graph for this function:

◆ FormatISO8601Date()

std::string FormatISO8601Date ( int64_t  nTime)

Definition at line 92 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 83 of file time.cpp.

Here is the caller graph for this function:

◆ FormatRFC1123DateTime()

std::string FormatRFC1123DateTime ( int64_t  nTime)

RFC1123 formatting https://www.rfc-editor.org/rfc/rfc1123#section-5.2.14 Used in HTTP/1.1 responses.

Definition at line 124 of file time.cpp.

Here is the caller graph for this function:

◆ GetMockTime()

std::chrono::seconds GetMockTime ( )

For testing.

Definition at line 52 of file time.cpp.

Here is the caller graph for this function:

◆ GetTime() [1/2]

int64_t GetTime ( )

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

ClockType is

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

Definition at line 81 of file time.cpp.

Here is the caller graph for this function:

◆ GetTime() [2/2]

template<typename T >
T GetTime ( )

DEPRECATED, see GetTime.

Definition at line 132 of file time.h.

◆ MillisToTimeval() [1/2]

struct timeval MillisToTimeval ( int64_t  nTimeout)

Convert milliseconds to a struct timeval for e.g.

select.

Definition at line 142 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 150 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 precision.

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

Definition at line 126 of file time.h.

◆ ParseISO8601DateTime()

std::optional< int64_t > ParseISO8601DateTime ( std::string_view  str)

Definition at line 100 of file time.cpp.

Here is the caller graph for this function:

◆ SetMockTime() [1/3]

void SetMockTime ( int64_t  nMockTimeIn)

DEPRECATED Use SetMockTime with chrono type.

Parameters
[in]nMockTimeInTime in seconds.

Definition at line 44 of file time.cpp.

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

◆ SetMockTime() [2/3]

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

For testing.

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

Definition at line 46 of file time.cpp.

◆ SetMockTime() [3/3]

void SetMockTime ( std::chrono::time_point< NodeClock, std::chrono::seconds >  mock)

Definition at line 45 of file time.cpp.

Here is the call graph for this function:

◆ Ticks()

template<typename Dur1 , typename Dur2 >
constexpr auto Ticks ( Dur2  d)
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 73 of file time.h.

◆ TicksSeconds()

template<typename Duration >
constexpr int64_t TicksSeconds ( Duration  d)
constexpr

Definition at line 79 of file time.h.

Here is the caller graph for this function:

◆ TicksSinceEpoch()

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

Definition at line 84 of file time.h.

◆ UninterruptibleSleep()

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

Definition at line 24 of file time.cpp.

Here is the caller graph for this function: