32class WriteFileHandler;
49 return layoutFixedSize_ + layoutVariableSize_;
55 const size_t layoutFixedSize_{};
56 const size_t layoutVariableSize_{};
84 : data_{vectorT.data()}, size_{sizeof(T) * vectorT.
size()} {}
91 std::enable_if_t<std::is_trivially_copyable<T>::value,
int> = 0,
93 typename =
typename std::enable_if<!is_pointer<T>::value, T>::type>
101 const void* data()
const {
111 const void*
const data_;
125 NonContiguousChunk(
const void* data,
size_t blockSize,
size_t numBlocks,
size_t strideInBytes);
130 const size_t blockSize_;
131 const size_t numBlocks_;
132 const size_t strideInBytes_;
161 : chunk1_{firstChunk}, chunk2_{secondChunk}, size_{firstChunk.size() + secondChunk.size()} {}
167 : chunk1_{firstChunk}, chunk2_{secondChunk}, chunk3_{thirdChunk}, size_{
getChunksSize()} {}
170 : dataLayout1_{dataLayout}, size_{dataLayout1_.size()} {}
173 : dataLayout1_{dataLayout}, chunk1_{chunk}, size_{dataLayout1_.size() + chunk1_.size()} {}
219 virtual void copyTo(uint8_t* buffer)
const;
231 const DataSourceChunk& chunk2_{kEmptyDataSourceChunk};
232 const DataSourceChunk& chunk3_{kEmptyDataSourceChunk};
The DataLayout class describes the data stored inside a DataLayoutContentBlock.
Definition DataLayout.h:191
Elementary part of a DataSource for a simple block of memory.
Definition DataSource.h:70
DataSourceChunk(const DataSourceChunk &other)=delete
Not copyable as there are derived classes that aren't safe to copy from the base class.
size_t size() const
For performance, do not make this method virtual.
Definition DataSource.h:106
DataSourceChunk(const T &object)
Constructor for a trivially copyable type T.
Definition DataSource.h:95
DataSourceChunk(const vector< T > &vectorT)
Constructor for a vector<T> of objects of POD type T.
Definition DataSource.h:83
DataSourceChunk()
Empty DataSourceChunk.
Definition DataSource.h:77
virtual void fillAndAdvanceBuffer(uint8_t *&buffer) const
Definition DataSource.cpp:48
A class referencing data to be captured in a record at creation.
Definition DataSource.h:151
size_t getDataSize() const
Definition DataSource.h:212
DataSource(const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk)
Constructor for two DataSourceChunk objects.
Definition DataSource.h:160
DataSource(const DataSourceChunk &firstChunk, const DataSourceChunk &secondChunk, const DataSourceChunk &thirdChunk)
Constructor for three DataSourceChunk objects.
Definition DataSource.h:163
size_t getChunksSize()
Definition DataSource.cpp:147
DataSource(size_t size=0)
Definition DataSource.h:155
DataSource(const DataSourceChunk &chunk)
Constructor for a single DataSourceChunk.
Definition DataSource.h:158
virtual void copyTo(uint8_t *buffer) const
Definition DataSource.cpp:133
DataSource(DataLayout &dataLayout, const DataSourceChunk &chunk)
Constructor for single DataLayout, single DataSourceChunk.
Definition DataSource.h:172
DataSource(DataLayout &dataLayout)
Constructor for a single DataLayout, no DataSourceChunk.
Definition DataSource.h:169
Class to hold data that is written directly in the file at the end of a record. Record data held by D...
Definition DataSource.h:244
virtual size_t getDataSize() const =0
Get the total amount of data that will be written to disk. This value may not change.
virtual int write(WriteFileHandler &file) const =0
Class to represent a data chunk composed of multiple smaller chunks that each have fixed offsets from...
Definition DataSource.h:117
void fillAndAdvanceBuffer(uint8_t *&buffer) const final
Definition DataSource.cpp:67
The WriteFileHandler interface adds write operations to the FileHandler interface.
Definition WriteFileHandler.h:45
Definition AsyncDiskFileChunk.hpp:49
Class referencing a DataLayout object, and abstracting the interactions for DataSource.
Definition DataSource.h:41
DataLayoutChunk()=default
Default constructor to no DataLayout.
size_t size() const
Get the data size required to hold all of the DataLayout's data.
Definition DataSource.h:48
void fillAndAdvanceBuffer(uint8_t *&buffer) const
Copy the data of the DataLayout (if any), and move the given pointer accordingly.
Definition DataSource.cpp:32