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 VirtualClock for all of the users.
The VirtualSystemClock::RealClock()
function returns a reference to the real global SystemClock.
Example:
This interface is thread and IRQ safe.
Public Member Functions | |
virtual SystemClock::time_point | now ()=0 |
Returns the current time. | |
Static Public Member Functions | |
static VirtualClock< SystemClock > & | RealClock () |
Returns a reference to the real system clock to aid instantiation. | |