VRS
A file format for sensor data.
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Static Protected Attributes | List of all members
vrs::DataSource Class Reference

A class referencing data to be captured in a record at creation. More...

#include <DataSource.h>

Public Member Functions

 DataSource (size_t size=0)
 
 DataSource (const DataSourceChunk &chunk)
 Constructor for a single DataSourceChunk.
 
 DataSource (const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk)
 Constructor for two DataSourceChunk objects.
 
 DataSource (const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk, const DataSourceChunk &thirdChunk)
 Constructor for three DataSourceChunk objects.
 
 DataSource (DataLayout &dataLayout)
 Constructor for a single DataLayout, no DataSourceChunk.
 
 DataSource (DataLayout &dataLayout, const DataSourceChunk &chunk)
 Constructor for single DataLayout, single DataSourceChunk.
 
 DataSource (DataLayout &dataLayout, const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk)
 Constructor for single DataLayout, two DataSourceChunk objects.
 
 DataSource (DataLayout &dataLayout, const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk, const DataSourceChunk &thirdChunk)
 Constructor for single DataLayout, three DataSourceChunk objects.
 
 DataSource (DataLayout &dataLayout1, DataLayout &dataLayout2)
 Constructor for two DataLayout objects, no DataSourceChunk.
 
 DataSource (DataLayout &dataLayout1, DataLayout &dataLayout2, const DataSourceChunk &chunk)
 Constructor for two DataLayout objects, single DataSourceChunk.
 
 DataSource (DataLayout &dataLayout1, DataLayout &dataLayout2, const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk)
 Two DataLayout objects, two DataSourceChunk objects.
 
 DataSource (DataLayout &dataLayout1, DataLayout &dataLayout2, const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk, const DataSourceChunk &thirdChunk)
 Two DataLayout objects, three DataSourceChunk objects.
 
 DataSource (const DataSource &)=delete
 
DataSourceoperator= (const DataSource &)=delete
 
size_t getDataSize () const
 
virtual void copyTo (uint8_t *buffer) const
 

Protected Member Functions

size_t getChunksSize ()
 

Protected Attributes

const DataLayoutChunk dataLayout1_
 
const DataLayoutChunk dataLayout2_
 
const DataSourceChunkchunk1_ {kEmptyDataSourceChunk}
 
const DataSourceChunkchunk2_ {kEmptyDataSourceChunk}
 
const DataSourceChunkchunk3_ {kEmptyDataSourceChunk}
 
const size_t size_
 

Static Protected Attributes

static DataSourceChunk kEmptyDataSourceChunk
 

Detailed Description

A class referencing data to be captured in a record at creation.

VRS records data content are passed to VRS using a single DataSource object.

DataSource objects point to data to be copied in a record's buffer when createRecord() is called to perform a deep copy. This reduces the number of data copy required, as each DataLayoutChunk and DataSourceChunk object may point to internal data buffers, possibly owned by device drivers.

DataSource's default implementation holds 2 DataLayoutChunk objects, and 3 DataSourceChunk objects, in that order, which covers standard use cases, as each only optionally contains data.

For more advanced needs, you can override copyTo() and copy data at the provided location the way you like, but you must provide the exact amount of data upfront in the constructor. Alternatively, you can use custom DataSourceChunk objects that override fillAndAdvanceBuffer(). DataSource objects are expected to be temporary object created on the stack each time createdRecord() is called.

Constructor & Destructor Documentation

◆ DataSource()

vrs::DataSource::DataSource ( size_t  size = 0)
inlineexplicit

No DataLayout, no DataSourceChunk

Parameters
sizeCached number of bytes of the data source.

Member Function Documentation

◆ copyTo()

void vrs::DataSource::copyTo ( uint8_t *  buffer) const
virtual

Copy all the source data to a buffer guaranteed to be at least getDataSize() large. The total amount of data copied is expected to be exactly getDataSize().

Parameters
bufferPointer to a buffer of bytes to copy the data to.

◆ getChunksSize()

size_t vrs::DataSource::getChunksSize ( )
protected

Get the overall size of all the parts combined, DataLayout & DataSourceChunks.

Returns
The combined size of all the member chunks.

◆ getDataSize()

size_t vrs::DataSource::getDataSize ( ) const
inline

Get the total amount of data to copy, calculated once & cached at construction. Might not be the same as the sum of the chunks sizes, when this class is derived.

Returns
The size requested.

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