Kea  2.1.7-git
isc::util::StopwatchImpl Class Reference

Stopwatch class implementation. More...

#include <stopwatch_impl.h>

Public Member Functions

 StopwatchImpl ()
 Constructor. More...
 
virtual ~StopwatchImpl ()
 Virtual destructor. More...
 
boost::posix_time::time_duration getLastDuration () const
 Retrieves the measured duration. More...
 
boost::posix_time::time_duration getTotalDuration () const
 Retrieves the total measured duration. More...
 
void reset ()
 Reset the stopwatch. More...
 
void start ()
 Starts the stopwatch. More...
 
void stop ()
 Stop the stopwatch. More...
 

Static Public Member Functions

static std::string logFormat (const boost::posix_time::time_duration &duration)
 Returns the duration in the textual format which can be directly used in log messages. More...
 

Protected Member Functions

virtual boost::posix_time::ptime getCurrentTime () const
 Returns the current time. More...
 

Detailed Description

Stopwatch class implementation.

The Stopwatch class uses the plimpl idiom to make it easier to unit test behavior of the Stopwatch class without a need to rely on the system clock. The StopwatchImpl API allows for overriding the getCurrentTime method to return the arbitrary time value as current time to various methods. By setting the current time to arbitrary values the test can expect arbitrary values being returned by the class methods.

Also, by using the pimpl idiom the Stopwatch class hides its implementation details and leaves the header with only the pointer to the StopwatchImpl class.

Definition at line 28 of file stopwatch_impl.h.

Constructor & Destructor Documentation

◆ StopwatchImpl()

isc::util::StopwatchImpl::StopwatchImpl ( )

Constructor.

Initializes the internally used timestamps. It also sets the state of the stopwatch to "stopped".

Definition at line 18 of file stopwatch_impl.cc.

◆ ~StopwatchImpl()

isc::util::StopwatchImpl::~StopwatchImpl ( )
virtual

Virtual destructor.

This destructor is virtual because the StopwatchImpl::getCurrentTime is virtual.

Definition at line 25 of file stopwatch_impl.cc.

Member Function Documentation

◆ getCurrentTime()

ptime isc::util::StopwatchImpl::getCurrentTime ( ) const
protectedvirtual

Returns the current time.

This method is used internally by the StopwatchImpl class and its derivations. This class simply returns the value of boost::posix_time::microsec_clock::univeral_time(), which is a current timestamp. The derivations may replace it with the custom implementations. The typical use case is for the unit tests to customize the behavior of this function to return well known (deterministic) values. As a result, it is possible to influence the "measured" values returned by accessors of this class, which can be compared against some exact values.

Definition at line 91 of file stopwatch_impl.cc.

Referenced by getLastDuration(), getTotalDuration(), reset(), start(), and stop().

◆ getLastDuration()

time_duration isc::util::StopwatchImpl::getLastDuration ( ) const

Retrieves the measured duration.

Also see the Stopwatch::getLastDuration for details.

Definition at line 61 of file stopwatch_impl.cc.

References getCurrentTime().

Referenced by isc::util::Stopwatch::getLastDuration().

+ Here is the call graph for this function:

◆ getTotalDuration()

time_duration isc::util::StopwatchImpl::getTotalDuration ( ) const

Retrieves the total measured duration.

Also see the Stopwatch::getTotalDuration for details.

Definition at line 70 of file stopwatch_impl.cc.

References getCurrentTime().

Referenced by isc::util::Stopwatch::getTotalDuration().

+ Here is the call graph for this function:

◆ logFormat()

std::string isc::util::StopwatchImpl::logFormat ( const boost::posix_time::time_duration &  duration)
static

Returns the duration in the textual format which can be directly used in log messages.

Todo:
Currently this function returns the duration as fractional milliseconds. We may come up with something more sophisticated in the future.
Parameters
durationDuration to be converted to the textual format.
Returns
Converted value which can be used to log duration.

Definition at line 82 of file stopwatch_impl.cc.

Referenced by isc::util::Stopwatch::logFormatLastDuration(), and isc::util::Stopwatch::logFormatTotalDuration().

◆ reset()

void isc::util::StopwatchImpl::reset ( )

Reset the stopwatch.

Also see the Stopwatch::reset for details.

Definition at line 49 of file stopwatch_impl.cc.

References getCurrentTime().

Referenced by isc::util::Stopwatch::reset().

+ Here is the call graph for this function:

◆ start()

void isc::util::StopwatchImpl::start ( )

Starts the stopwatch.

Sets the stopwatch to the "started" state. It also records the time when the stopwatch is started. This method is no-op if the stopwatch is already in the "started" state.

Also see the Stopwatch::start for details.

Definition at line 29 of file stopwatch_impl.cc.

References getCurrentTime().

Referenced by isc::util::Stopwatch::start().

+ Here is the call graph for this function:

◆ stop()

void isc::util::StopwatchImpl::stop ( )

Stop the stopwatch.

Sets the stopwatch to the "stopped" state. The stop time is recorded and the cumulative time is updated to include the duration between the most recent start and stop. This method is no-op if the stopwatch is already in the "stopped" state.

Also see the Stopwatch::stop for details.

Definition at line 38 of file stopwatch_impl.cc.

References getCurrentTime().

Referenced by isc::util::Stopwatch::stop().

+ Here is the call graph for this function:

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