OpenSDN source code
TraceBuffer< TraceEntryT > Class Template Reference

#include <trace.h>

Collaboration diagram for TraceBuffer< TraceEntryT >:

Public Types

typedef std::map< const std::string, boost::weak_ptr< TraceBuffer< TraceEntryT > > > TraceBufMap
 The type defines how a map (a table) of trace buffers is stored. More...
 

Public Member Functions

 TraceBuffer (const std::string &buf_name, size_t size, bool trace_enable)
 
 ~TraceBuffer ()
 Destroys a trace buffer. More...
 
std::string Name ()
 Returns the name of the trace buffer. More...
 
void TraceOn ()
 Enables the trace buffer. More...
 
void TraceOff ()
 Disables the trace buffer. More...
 
bool IsTraceOn ()
 Determines whether the trace buffer is enabled or not. More...
 
size_t TraceBufSizeGet ()
 
size_t TraceBufCapacityGet ()
 
void TraceBufCapacityReset (size_t size)
 Resets the size of the circular buffer. More...
 
void TraceWrite (TraceEntryT *trace_entry)
 Writes the provided data into the circular buffer. More...
 
uint32_t GetNextSeqNum ()
 Returns the next sequence number. More...
 
void TraceRead (const std::string &context, const int count, boost::function< void(TraceEntryT *, bool)> cb)
 
void TraceReadDone (const std::string &context)
 

Private Types

typedef boost::ptr_circular_buffer< TraceEntryT > ContainerType
 Specifies the data type for storing records of the trace buffer. More...
 
typedef std::map< const std::string, boost::shared_ptr< size_t > > ReadContextMap
 Specifies the read context for the trace buffer. More...
 

Private Member Functions

 DISALLOW_COPY_AND_ASSIGN (TraceBuffer)
 

Private Attributes

std::string trace_buf_name_
 Stores the name of the trace buffer. More...
 
size_t trace_buf_size_
 Stores the size of the trace buffer. More...
 
ContainerType trace_buf_
 Stores the records of the trace buffer. More...
 
tbb::atomic< bool > trace_enable_
 
size_t write_index_
 
size_t read_index_
 
bool wrap_
 Indicates if the trace buffer is wrapped. More...
 
ReadContextMap read_context_map_
 Stores the read context. More...
 
tbb::atomic< uint32_t > seqno_
 Stores the current sequence number. More...
 
tbb::mutex mutex_
 

Static Private Attributes

static const uint32_t kMaxSeqno = ((2 ^ 32) - 1) - 1
 Reserves max(uint32_t) More...
 
static const uint32_t kMinSeqno = 1
 Reserves 0. More...
 

Detailed Description

template<typename TraceEntryT>
class TraceBuffer< TraceEntryT >

Manages a trace buffer's memory. A trace buffer is circular buffer with the given size (count of records) and associated with the given name. The type of records is specified during compilation using the template parameter TraceEntryT. Trace buffers are organized into a table.

Definition at line 23 of file trace.h.

Member Typedef Documentation

◆ ContainerType

template<typename TraceEntryT >
typedef boost::ptr_circular_buffer<TraceEntryT> TraceBuffer< TraceEntryT >::ContainerType
private

Specifies the data type for storing records of the trace buffer.

Definition at line 195 of file trace.h.

◆ ReadContextMap

template<typename TraceEntryT >
typedef std::map<const std::string, boost::shared_ptr<size_t> > TraceBuffer< TraceEntryT >::ReadContextMap
private

Specifies the read context for the trace buffer.

Definition at line 199 of file trace.h.

◆ TraceBufMap

template<typename TraceEntryT >
typedef std::map<const std::string, boost::weak_ptr<TraceBuffer<TraceEntryT> > > TraceBuffer< TraceEntryT >::TraceBufMap

The type defines how a map (a table) of trace buffers is stored.

Definition at line 28 of file trace.h.

Constructor & Destructor Documentation

◆ TraceBuffer()

template<typename TraceEntryT >
TraceBuffer< TraceEntryT >::TraceBuffer ( const std::string &  buf_name,
size_t  size,
bool  trace_enable 
)
inline

Creates a new trace buffer with the given name and size (enable by default).

Definition at line 32 of file trace.h.

◆ ~TraceBuffer()

template<typename TraceEntryT >
TraceBuffer< TraceEntryT >::~TraceBuffer ( )
inline

Destroys a trace buffer.

Definition at line 44 of file trace.h.

Member Function Documentation

◆ DISALLOW_COPY_AND_ASSIGN()

template<typename TraceEntryT >
TraceBuffer< TraceEntryT >::DISALLOW_COPY_AND_ASSIGN ( TraceBuffer< TraceEntryT >  )
private

◆ GetNextSeqNum()

template<typename TraceEntryT >
uint32_t TraceBuffer< TraceEntryT >::GetNextSeqNum ( )
inline

Returns the next sequence number.

Definition at line 127 of file trace.h.

◆ IsTraceOn()

template<typename TraceEntryT >
bool TraceBuffer< TraceEntryT >::IsTraceOn ( )
inline

Determines whether the trace buffer is enabled or not.

Definition at line 65 of file trace.h.

◆ Name()

template<typename TraceEntryT >
std::string TraceBuffer< TraceEntryT >::Name ( )
inline

Returns the name of the trace buffer.

Definition at line 50 of file trace.h.

◆ TraceBufCapacityGet()

template<typename TraceEntryT >
size_t TraceBuffer< TraceEntryT >::TraceBufCapacityGet ( )
inline

Returns the length (the maximum number of records) in the circular buffer.

Definition at line 77 of file trace.h.

◆ TraceBufCapacityReset()

template<typename TraceEntryT >
void TraceBuffer< TraceEntryT >::TraceBufCapacityReset ( size_t  size)
inline

Resets the size of the circular buffer.

Definition at line 82 of file trace.h.

◆ TraceBufSizeGet()

template<typename TraceEntryT >
size_t TraceBuffer< TraceEntryT >::TraceBufSizeGet ( )
inline

Returns the length (the maximum number of records) in the circular buffer.

Definition at line 71 of file trace.h.

◆ TraceOff()

template<typename TraceEntryT >
void TraceBuffer< TraceEntryT >::TraceOff ( )
inline

Disables the trace buffer.

Definition at line 60 of file trace.h.

◆ TraceOn()

template<typename TraceEntryT >
void TraceBuffer< TraceEntryT >::TraceOn ( )
inline

Enables the trace buffer.

Definition at line 55 of file trace.h.

◆ TraceRead()

template<typename TraceEntryT >
void TraceBuffer< TraceEntryT >::TraceRead ( const std::string &  context,
const int  count,
boost::function< void(TraceEntryT *, bool)>  cb 
)
inline

Reads the specified number of records from the buffer. Each records is submitted into the specified callback function.

Definition at line 138 of file trace.h.

◆ TraceReadDone()

template<typename TraceEntryT >
void TraceBuffer< TraceEntryT >::TraceReadDone ( const std::string &  context)
inline

The member function is called to complete the reading of the circular buffer data.

Definition at line 183 of file trace.h.

◆ TraceWrite()

template<typename TraceEntryT >
void TraceBuffer< TraceEntryT >::TraceWrite ( TraceEntryT *  trace_entry)
inline

Writes the provided data into the circular buffer.

Definition at line 88 of file trace.h.

Member Data Documentation

◆ kMaxSeqno

template<typename TraceEntryT >
const uint32_t TraceBuffer< TraceEntryT >::kMaxSeqno = ((2 ^ 32) - 1) - 1
staticprivate

Reserves max(uint32_t)

Definition at line 236 of file trace.h.

◆ kMinSeqno

template<typename TraceEntryT >
const uint32_t TraceBuffer< TraceEntryT >::kMinSeqno = 1
staticprivate

Reserves 0.

Definition at line 239 of file trace.h.

◆ mutex_

template<typename TraceEntryT >
tbb::mutex TraceBuffer< TraceEntryT >::mutex_
private

Used to restrict simulateneous access to the trace buffer data from 2 threads

Definition at line 233 of file trace.h.

◆ read_context_map_

template<typename TraceEntryT >
ReadContextMap TraceBuffer< TraceEntryT >::read_context_map_
private

Stores the read context.

Definition at line 226 of file trace.h.

◆ read_index_

template<typename TraceEntryT >
size_t TraceBuffer< TraceEntryT >::read_index_
private

Points to the position of the oldest trace message in the trace buffer

Definition at line 220 of file trace.h.

◆ seqno_

template<typename TraceEntryT >
tbb::atomic<uint32_t> TraceBuffer< TraceEntryT >::seqno_
private

Stores the current sequence number.

Definition at line 229 of file trace.h.

◆ trace_buf_

template<typename TraceEntryT >
ContainerType TraceBuffer< TraceEntryT >::trace_buf_
private

Stores the records of the trace buffer.

Definition at line 208 of file trace.h.

◆ trace_buf_name_

template<typename TraceEntryT >
std::string TraceBuffer< TraceEntryT >::trace_buf_name_
private

Stores the name of the trace buffer.

Definition at line 202 of file trace.h.

◆ trace_buf_size_

template<typename TraceEntryT >
size_t TraceBuffer< TraceEntryT >::trace_buf_size_
private

Stores the size of the trace buffer.

Definition at line 205 of file trace.h.

◆ trace_enable_

template<typename TraceEntryT >
tbb::atomic<bool> TraceBuffer< TraceEntryT >::trace_enable_
private

A flag to determine whether the trace buffer is enabled (ready for reading and writing).

Definition at line 212 of file trace.h.

◆ wrap_

template<typename TraceEntryT >
bool TraceBuffer< TraceEntryT >::wrap_
private

Indicates if the trace buffer is wrapped.

Definition at line 223 of file trace.h.

◆ write_index_

template<typename TraceEntryT >
size_t TraceBuffer< TraceEntryT >::write_index_
private

Points to the position in the trace buffer where the next trace message would be added

Definition at line 216 of file trace.h.


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