17#ifndef ROOT7_RPageSinkBuf
18#define ROOT7_RPageSinkBuf
29namespace Experimental {
51 std::unique_ptr<unsigned char[]>
fBuf;
68 using iterator = std::deque<RPageZipItem>::iterator;
138 explicit RPageSinkBuf(std::unique_ptr<RPageSink> inner);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h length
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
bool HasSealedPagesOnly() const
const RPageStorage::SealedPageSequence_t & GetSealedPages() const
RPageStorage::SealedPageSequence_t::iterator RegisterSealedPage()
RColumnBuf & operator=(RColumnBuf &&)=default
RPageStorage::SealedPageSequence_t fSealedPages
std::deque< RPageZipItem > fBufferedPages
std::deque< RPageZipItem >::iterator iterator
BufferedPages_t DrainBufferedPages()
std::tuple< std::deque< RPageZipItem >, RPageStorage::SealedPageSequence_t > BufferedPages_t
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
RPageSinkBuf(RPageSinkBuf &&)=default
~RPageSinkBuf() override=default
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.
RPageSinkBuf & operator=(RPageSinkBuf &&)=default
RPageSinkBuf(const RPageSinkBuf &)=delete
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...
RPageSinkBuf & operator=(const RPageSinkBuf &)=delete
std::vector< RColumnBuf > fBufferedColumns
Vector of buffered column pages. Indexed by column id.
void CommitDatasetImpl(unsigned char *serializedFooter, std::uint32_t length) final
std::uint64_t CommitClusterImpl(NTupleSize_t nEntries) final
Returns the number of bytes written to storage (excluding metadata)
RNTupleLocator CommitClusterGroupImpl(unsigned char *serializedPageList, std::uint32_t length) final
Returns the locator of the page list envelope of the given buffer that contains the serialized page l...
void CreateImpl(const RNTupleModel &model, unsigned char *serializedHeader, std::uint32_t length) 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.
std::deque< RSealedPage > SealedPageSequence_t
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.
This file contains a specialised ROOT message handler to test for diagnostic in unit tests.
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.