16#ifndef ROOT7_RPageStorage
17#define ROOT7_RPageStorage
28namespace Experimental {
129 virtual std::unique_ptr<ROOT::Experimental::RNTupleModel>
GenerateModel() = 0;
A thread-safe cache of column pages.
Abstract interface to write data into a tree.
virtual void Create(RNTupleModel *model)=0
Physically creates the storage container to hold the tree (e.g., a directory in a TFile or a S3 bucke...
virtual void CommitPage(ColumnHandle_t columnHandle, const RPage &page)=0
Write a page to the storage. The column must have been added before.
RPageSink(std::string_view treeName)
virtual void CommitCluster(NTupleSize_t nEntries)=0
Finalize the current cluster and create a new one for the following data.
virtual void CommitDataset()=0
Finalize the current cluster and the entrire data set.
EPageStorageType GetType() final
Abstract interface to read data from a tree.
virtual const RNTupleDescriptor & GetDescriptor() const =0
virtual NTupleSize_t GetNEntries()=0
virtual void PopulatePage(ColumnHandle_t columnHandle, NTupleSize_t index, RPage *page)=0
Fills a page starting with index rangeStart; the corresponding column is taken from the page object.
virtual void Attach()=0
TODO: copy/assignment for creating clones in multiple threads.
virtual NTupleSize_t GetNElements(ColumnHandle_t columnHandle)=0
EPageStorageType GetType() final
virtual std::unique_ptr< ROOT::Experimental::RNTupleModel > GenerateModel()=0
RPageSource(std::string_view treeName)
virtual ColumnId_t GetColumnId(ColumnHandle_t columnHandle)=0
Manages tree meta-data, which is common for sinks and sources.
RPageStorage(const RPageStorage &other)=delete
RPagePool * GetPagePool() const
std::unique_ptr< RPagePool > fPagePool
All data is shipped to and from physical storage in pages, and moderated through a page pool.
virtual EPageStorageType GetType()=0
virtual ColumnHandle_t AddColumn(RColumn *column)=0
Register a new column.
RPageStorage & operator=(const RPageStorage &other)=delete
A page is a fixed size slice of a column that is mapped into memory.
A column is a storage-backed array of a simple, fixed-size type, from which pages can be mapped into ...
A field translates read and write calls from/to underlying columns to/from tree values.
Represents the on-disk (on storage) information about an ntuple.
The RNTupleModel encapulates the schema of an ntuple.
basic_string_view< char > string_view
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
std::int64_t ColumnId_t
Uniquely identifies a physical column within the scope of the current process, used to tag pages.
Namespace for new ROOT classes and functions.
RColumnHandle(int id, RColumn *column)