Pigweed
Loading...
Searching...
No Matches
pw::chrono::VirtualSystemClock Class Referenceabstract

#include <system_clock.h>

Public Member Functions

virtual SystemClock::time_point now ()=0
 Returns the current time.
 

Static Public Member Functions

static VirtualSystemClockRealClock ()
 Returns a reference to the real system clock to aid instantiation.
 

Detailed Description

An abstract interface representing a SystemClock.

This interface allows decoupling code that uses time from the code that creates a point in time. You can use this to your advantage by injecting Clocks into interfaces rather than having implementations call SystemClock::now() directly. However, this comes at a cost of a vtable per implementation and more importantly passing and maintaining references to the VirtualSystemCLock for all of the users.

The VirtualSystemClock::RealClock() function returns a reference to the real global SystemClock.

Example:

void DoFoo(VirtualSystemClock& system_clock) {
SystemClock::time_point now = clock.now();
// ... Code which consumes now.
}
// Production code:
DoFoo(VirtualSystemCLock::RealClock);
// Test code:
MockClock test_clock();
DoFoo(test_clock);
Definition: system_clock.h:165
virtual SystemClock::time_point now()=0
Returns the current time.

This interface is thread and IRQ safe.

Member Function Documentation

◆ now()

virtual SystemClock::time_point pw::chrono::VirtualSystemClock::now ( )
pure virtual

Returns the current time.

Implemented in pw::async::HeapDispatcher, and pw::async::BasicDispatcher.


The documentation for this class was generated from the following file: