kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData > Class Template Reference

Abstract value profiler. More...

#include <kanzi/core/profiling/abstract_value_profiler.hpp>

Inheritance diagram for kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >:
kanzi::AbstractProfiler

Public Types

typedef TProfilingDataSample SampleDataType
 The sample data type typedef used in derived classes. More...
 
typedef TAggregateProfilingData AggregateProfilingDataType
 The aggregate profiling data type typedef used in derived classes. More...
 
- Public Types inherited from kanzi::AbstractProfiler
enum  DataType {
  DataTypeNotDefined, DataTypeBoolean, DataTypeUint64, DataTypeFloat,
  DataTypeString
}
 Supported profiling data field value types. More...
 
typedef variant< monostate, bool, uint64_t, float, string > Value
 Container for profiling data field value. More...
 

Protected Member Functions

 AbstractValueProfiler (string_view name, const ProfilingCategory &category, size_t sampleBufferSize)
 Constructor. More...
 
const TProfilingDataSample & getSample (size_t index) const
 Accesses a profiling data sample stored in the sample buffer. More...
 
void addSample (const TProfilingDataSample &sample)
 Adds a new profiling data sample. More...
 
void addSample (KZ_RV_REF(TProfilingDataSample) sample)
 Adds a new movable profiling data sample to the profiler. More...
 
void resetSampleData ()
 Resets the aggregate profiling data and sample buffer. More...
 
virtual size_t getSampleCountOverride () const KZ_OVERRIDE
 Override of #AbstractProfiler::getSampleCountOverride(). More...
 
- Protected Member Functions inherited from kanzi::AbstractProfiler
 AbstractProfiler (string_view name, const ProfilingCategory &category)
 Constructor. More...
 
virtual size_t getAggregateDataFieldCountOverride () const =0
 To provide the number of the aggregate data fields, override this function in the derived profiler class. More...
 
virtual string getAggregateDataFieldNameOverride (size_t fieldIndex) const =0
 To provide the name of aggregate data field with given index, override this function in the derived profiler class. More...
 
virtual Value getAggregateDataFieldValueOverride (size_t fieldName) const =0
 To provide access to aggregate profiling data field values, override this function in the derived profiler class. More...
 
virtual size_t getSampleFieldCountOverride () const =0
 To provide the number of sample fields, override this function in the derived profiler class. More...
 
virtual string getSampleFieldNameOverride (size_t fieldIndex) const =0
 To provide the name of a sample field with a given index, override this function in the derived profiler class. More...
 
virtual Value getSampleFieldValueOverride (size_t sampleIndex, size_t fieldName) const =0
 To provide access to profiling data sample fields of the derived profiler, override this function in the derived profiler class. More...
 
virtual void logAggregateDataOverride () const
 To implement your own logging of aggregate profiling data, override this function in the derived profiler class. More...
 
virtual void logAllDataOverride () const
 To implement your own logging of all profiling data, override this function in the derived profiler class. More...
 

Protected Attributes

TAggregateProfilingData m_aggregateProfilingData
 The aggregate profiling data. More...
 

Additional Inherited Members

- Public Member Functions inherited from kanzi::AbstractProfiler
virtual ~AbstractProfiler ()
 Destructor. More...
 
string_view getName () const
 Gets the name of the profiler. More...
 
const ProfilingCategorygetCategory () const
 Gets a reference to the profiling category assigned to the profiler. More...
 
size_t getAggregateDataFieldCount () const
 Gets the number of aggregate data fields. More...
 
string getAggregateDataFieldName (size_t fieldIndex) const
 Gets the name of an aggregate data field. More...
 
Value getAggregateDataFieldValue (size_t fieldIndex) const
 Gets the value of an aggregate profiling data field. More...
 
size_t getSampleFieldCount () const
 Gets the number of sample data fields. More...
 
string getSampleFieldName (size_t fieldIndex) const
 Gets the name of a data sample field. More...
 
size_t getSampleCount () const
 Gets the number of collected profiling data samples. More...
 
Value getSampleFieldValue (size_t sampleIndex, size_t fieldIndex) const
 Gets the value of a profiling data sample field. More...
 
void logAggregateData () const
 Logs aggregate profiling data. More...
 
void logAllData () const
 Logs all profiling data. More...
 
- Static Public Member Functions inherited from kanzi::AbstractProfiler
static DataType getDataType (const Value &value)
 Gets the type of the data stored in a profiling data field. More...
 

Detailed Description

template<typename TProfilingDataSample, typename TAggregateProfilingData>
class kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >

Abstract value profiler.

Derive from AbstractValueProfiler to implement your own profiler which uses a circular buffer to store profiling samples.

The AbstractValueProfiler is a template class which stores profiling data samples of arbitrary type in a circular sample buffer. When the circular buffer runs out of space, new samples overwrite the oldest samples. The size of the sample buffer is set in constructor AbstractValueProfiler::AbstractValueProfiler().

To add a new sample to the profiler use the addSample() function in the derived class. To get a sample reference use the getSample() function in the derived class.

The AbstractValueProfiler provides a placeholder for arbitrary aggregate profiling data. You can access aggregate profiling data from the derived class through m_aggregateProfilingData.

Member Typedef Documentation

template<typename TProfilingDataSample, typename TAggregateProfilingData>
typedef TProfilingDataSample kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::SampleDataType

The sample data type typedef used in derived classes.

template<typename TProfilingDataSample, typename TAggregateProfilingData>
typedef TAggregateProfilingData kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::AggregateProfilingDataType

The aggregate profiling data type typedef used in derived classes.

Constructor & Destructor Documentation

template<typename TProfilingDataSample, typename TAggregateProfilingData>
kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::AbstractValueProfiler ( string_view  name,
const ProfilingCategory category,
size_t  sampleBufferSize 
)
inlineexplicitprotected

Constructor.

Parameters
nameThe name of the profiler.
categoryThe profiling category assigned to the profiler.
sampleBufferSizeThe maximum size of the sample buffer.

Member Function Documentation

template<typename TProfilingDataSample, typename TAggregateProfilingData>
const TProfilingDataSample& kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::getSample ( size_t  index) const
inlineprotected

Accesses a profiling data sample stored in the sample buffer.

The sample buffer is zero-based, meaning that oldest sample is stored at index 0.

Parameters
indexThe index of the sample.
Returns
The constant profiling data sample reference.
template<typename TProfilingDataSample, typename TAggregateProfilingData>
void kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::addSample ( const TProfilingDataSample &  sample)
inlineprotected

Adds a new profiling data sample.

Parameters
sampleThe profiling data sample.
template<typename TProfilingDataSample, typename TAggregateProfilingData>
void kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::addSample ( KZ_RV_REF(TProfilingDataSample)  sample)
inlineprotected

Adds a new movable profiling data sample to the profiler.

Parameters
sampleThe profiling data sample.
template<typename TProfilingDataSample, typename TAggregateProfilingData>
void kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::resetSampleData ( )
inlineprotected

Resets the aggregate profiling data and sample buffer.

template<typename TProfilingDataSample, typename TAggregateProfilingData>
virtual size_t kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::getSampleCountOverride ( ) const
inlineprotectedvirtual

Override of #AbstractProfiler::getSampleCountOverride().

Returns
The number of collected profiling data samples.

Implements kanzi::AbstractProfiler.

Member Data Documentation

template<typename TProfilingDataSample, typename TAggregateProfilingData>
TAggregateProfilingData kanzi::AbstractValueProfiler< TProfilingDataSample, TAggregateProfilingData >::m_aggregateProfilingData
protected

The aggregate profiling data.


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