17#ifndef ROOT7_RPageSinkBuf
18#define ROOT7_RPageSinkBuf
28namespace Experimental {
47 std::unique_ptr<unsigned char[]>
fBuf;
66 using iterator = std::deque<RPageZipItem>::iterator;
84 std::deque<RPageZipItem> drained;
A collection of Counter objects with a name, a unit, and a description.
A non thread-safe integral performance counter.
RColumnBuf(const RColumnBuf &)=delete
RColumnBuf(RColumnBuf &&)=default
const RPageStorage::ColumnHandle_t & GetHandle() const
iterator BufferPage(RPageStorage::ColumnHandle_t columnHandle, const RPage &page)
Returns an iterator to the newly buffered page.
RColumnBuf & operator=(const RColumnBuf &)=delete
RColumnBuf & operator=(RColumnBuf &&)=default
std::deque< RPageZipItem > fBufferedPages
std::deque< RPageZipItem > DrainBufferedPages()
std::deque< RPageZipItem >::iterator iterator
RPageStorage::ColumnHandle_t fCol
Wrapper sink that coalesces cluster column page writes.
RNTupleLocator CommitSealedPageImpl(DescriptorId_t columnId, const RSealedPage &sealedPage) final
void ReleasePage(RPage &page) final
Every page store needs to be able to free pages it handed out.
std::unique_ptr< RCounters > fCounters
RPage ReservePage(ColumnHandle_t columnHandle, std::size_t nElements) final
Get a new, empty page for the given column that can be filled with up to nElements.
std::unique_ptr< RPageSink > fInnerSink
The inner sink, responsible for actually performing I/O.
RNTupleMetrics & GetMetrics() final
Returns the default metrics object. Subclasses might alternatively provide their own metrics object b...
std::vector< RColumnBuf > fBufferedColumns
Vector of buffered column pages. Indexed by column id.
void CreateImpl(const RNTupleModel &model) final
std::uint64_t CommitClusterImpl(NTupleSize_t nEntries) final
Returns the number of bytes written to storage (excluding metadata)
void CommitDatasetImpl() final
std::unique_ptr< RNTupleModel > fInnerModel
The buffered page sink maintains a copy of the RNTupleModel for the inner sink.
RNTupleLocator CommitPageImpl(ColumnHandle_t columnHandle, const RPage &page) final
Abstract interface to write data into an ntuple.
A page is a slice of a column that is mapped into memory.
ClusterSize_t::ValueType GetNBytes() const
The space taken by column elements in the buffer.
The RNTupleModel encapulates the schema of an ntuple.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
RPageStorage::RSealedPage fSealedPage
void AllocateSealedPageBuf()
std::unique_ptr< unsigned char[]> fBuf
I/O performance counters that get registered in fMetrics.
RNTuplePlainCounter & fParallelZip
A sealed page contains the bytes of a page as written to storage (packed & compressed).
Generic information about the physical location of data.