Logo ROOT  
Reference Guide
ROOT::Experimental::Detail::RPageSinkRoot Class Reference

Storage provider that write ntuple pages into a ROOT TFile.

Definition at line 64 of file RPageStorageRoot.hxx.

Public Member Functions

 RPageSinkRoot (std::string_view ntupleName, std::string_view path, const RNTupleWriteOptions &options)
 
virtual ~RPageSinkRoot ()
 
RNTupleMetricsGetMetrics () final
 Page storage implementations usually have their own metrics. More...
 
void ReleasePage (RPage &page) final
 Every page store needs to be able to free pages it handed out. More...
 
RPage ReservePage (ColumnHandle_t columnHandle, std::size_t nElements=0) final
 Get a new, empty page for the given column that can be filled with up to nElements. More...
 
- Public Member Functions inherited from ROOT::Experimental::Detail::RPageSink
 RPageSink (std::string_view ntupleName, const RNTupleWriteOptions &options)
 
virtual ~RPageSink ()
 
ColumnHandle_t AddColumn (DescriptorId_t fieldId, const RColumn &column) final
 Register a new column. More...
 
void CommitCluster (NTupleSize_t nEntries)
 Finalize the current cluster and create a new one for the following data. More...
 
void CommitDataset ()
 Finalize the current cluster and the entrire data set. More...
 
void CommitPage (ColumnHandle_t columnHandle, const RPage &page)
 Write a page to the storage. The column must have been added before. More...
 
void Create (RNTupleModel &model)
 Physically creates the storage container to hold the ntuple (e.g., a keys a TFile or an S3 bucket) To do so, Create() calls DoCreate() after updating the descriptor. More...
 
EPageStorageType GetType () final
 Whether the concrete implementation is a sink or a source. More...
 
virtual RPage ReservePage (ColumnHandle_t columnHandle, std::size_t nElements=0)=0
 Get a new, empty page for the given column that can be filled with up to nElements. More...
 
- Public Member Functions inherited from ROOT::Experimental::Detail::RPageStorage
 RPageStorage (const RPageStorage &other)=delete
 
 RPageStorage (std::string_view name)
 
virtual ~RPageStorage ()
 
virtual ColumnHandle_t AddColumn (DescriptorId_t fieldId, const RColumn &column)=0
 Register a new column. More...
 
virtual RNTupleMetricsGetMetrics ()=0
 Page storage implementations usually have their own metrics. More...
 
virtual EPageStorageType GetType ()=0
 Whether the concrete implementation is a sink or a source. More...
 
RPageStorageoperator= (const RPageStorage &other)=delete
 
virtual void ReleasePage (RPage &page)=0
 Every page store needs to be able to free pages it handed out. More...
 

Protected Member Functions

RClusterDescriptor::RLocator DoCommitCluster (NTupleSize_t nEntries) final
 
void DoCommitDataset () final
 
RClusterDescriptor::RLocator DoCommitPage (ColumnHandle_t columnHandle, const RPage &page) final
 
void DoCreate (const RNTupleModel &model) final
 
virtual RClusterDescriptor::RLocator DoCommitCluster (NTupleSize_t nEntries)=0
 
virtual void DoCommitDataset ()=0
 
virtual RClusterDescriptor::RLocator DoCommitPage (ColumnHandle_t columnHandle, const RPage &page)=0
 
virtual void DoCreate (const RNTupleModel &model)=0
 

Private Attributes

TDirectoryfDirectory = nullptr
 
std::unique_ptr< TFilefFile
 Currently, an ntuple is stored as a directory in a TFile. More...
 
DescriptorId_t fLastPageIdx = 0
 Instead of a physical file offset, pages in root are identified by an index which becomes part of the key. More...
 
RNTupleMetrics fMetrics
 
std::unique_ptr< RPageAllocatorHeapfPageAllocator
 

Static Private Attributes

static constexpr std::size_t kDefaultElementsPerPage = 10000
 

Additional Inherited Members

- Public Types inherited from ROOT::Experimental::Detail::RPageStorage
using ColumnHandle_t = RColumnHandle
 The column handle identifies a column with the current open page storage. More...
 
- Static Public Member Functions inherited from ROOT::Experimental::Detail::RPageSink
static std::unique_ptr< RPageSinkCreate (std::string_view ntupleName, std::string_view location, const RNTupleWriteOptions &options=RNTupleWriteOptions())
 Guess the concrete derived page source from the file name (location) More...
 
- Protected Attributes inherited from ROOT::Experimental::Detail::RPageSink
RNTupleDescriptorBuilder fDescriptorBuilder
 
DescriptorId_t fLastClusterId = 0
 
DescriptorId_t fLastColumnId = 0
 
DescriptorId_t fLastFieldId = 0
 Building the ntuple descriptor while writing is done in the same way for all the storage sink implementations. More...
 
std::vector< RClusterDescriptor::RColumnRangefOpenColumnRanges
 Keeps track of the number of elements in the currently open cluster. Indexed by column id. More...
 
std::vector< RClusterDescriptor::RPageRangefOpenPageRanges
 Keeps track of the written pages in the currently open cluster. Indexed by column id. More...
 
const RNTupleWriteOptions fOptions
 
NTupleSize_t fPrevClusterNEntries = 0
 
- Protected Attributes inherited from ROOT::Experimental::Detail::RPageStorage
std::string fNTupleName
 

#include <ROOT/RPageStorageRoot.hxx>

Inheritance diagram for ROOT::Experimental::Detail::RPageSinkRoot:
[legend]

Constructor & Destructor Documentation

◆ RPageSinkRoot()

ROOT::Experimental::Detail::RPageSinkRoot::RPageSinkRoot ( std::string_view  ntupleName,
std::string_view  path,
const RNTupleWriteOptions options 
)

Definition at line 40 of file RPageStorageRoot.cxx.

◆ ~RPageSinkRoot()

ROOT::Experimental::Detail::RPageSinkRoot::~RPageSinkRoot ( )
virtual

Definition at line 52 of file RPageStorageRoot.cxx.

Member Function Documentation

◆ DoCommitCluster()

ROOT::Experimental::RClusterDescriptor::RLocator ROOT::Experimental::Detail::RPageSinkRoot::DoCommitCluster ( NTupleSize_t  nEntries)
finalprotectedvirtual

Implements ROOT::Experimental::Detail::RPageSink.

Definition at line 102 of file RPageStorageRoot.cxx.

◆ DoCommitDataset()

void ROOT::Experimental::Detail::RPageSinkRoot::DoCommitDataset ( )
finalprotectedvirtual

Implements ROOT::Experimental::Detail::RPageSink.

Definition at line 108 of file RPageStorageRoot.cxx.

◆ DoCommitPage()

ROOT::Experimental::RClusterDescriptor::RLocator ROOT::Experimental::Detail::RPageSinkRoot::DoCommitPage ( ColumnHandle_t  columnHandle,
const RPage page 
)
finalprotectedvirtual

Implements ROOT::Experimental::Detail::RPageSink.

Definition at line 72 of file RPageStorageRoot.cxx.

◆ DoCreate()

void ROOT::Experimental::Detail::RPageSinkRoot::DoCreate ( const RNTupleModel model)
finalprotectedvirtual

Implements ROOT::Experimental::Detail::RPageSink.

Definition at line 58 of file RPageStorageRoot.cxx.

◆ GetMetrics()

RNTupleMetrics & ROOT::Experimental::Detail::RPageSinkRoot::GetMetrics ( )
inlinefinalvirtual

Page storage implementations usually have their own metrics.

Implements ROOT::Experimental::Detail::RPageStorage.

Definition at line 91 of file RPageStorageRoot.hxx.

◆ ReleasePage()

void ROOT::Experimental::Detail::RPageSinkRoot::ReleasePage ( RPage page)
finalvirtual

Every page store needs to be able to free pages it handed out.

But Sinks and sources have different means of allocating pages.

Implements ROOT::Experimental::Detail::RPageStorage.

Definition at line 131 of file RPageStorageRoot.cxx.

◆ ReservePage()

ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSinkRoot::ReservePage ( ColumnHandle_t  columnHandle,
std::size_t  nElements = 0 
)
finalvirtual

Get a new, empty page for the given column that can be filled with up to nElements.

If nElements is zero, the page sink picks an appropriate size.

Implements ROOT::Experimental::Detail::RPageSink.

Definition at line 123 of file RPageStorageRoot.cxx.

Member Data Documentation

◆ fDirectory

TDirectory* ROOT::Experimental::Detail::RPageSinkRoot::fDirectory = nullptr
private

Definition at line 73 of file RPageStorageRoot.hxx.

◆ fFile

std::unique_ptr<TFile> ROOT::Experimental::Detail::RPageSinkRoot::fFile
private

Currently, an ntuple is stored as a directory in a TFile.

Definition at line 72 of file RPageStorageRoot.hxx.

◆ fLastPageIdx

DescriptorId_t ROOT::Experimental::Detail::RPageSinkRoot::fLastPageIdx = 0
private

Instead of a physical file offset, pages in root are identified by an index which becomes part of the key.

Definition at line 76 of file RPageStorageRoot.hxx.

◆ fMetrics

RNTupleMetrics ROOT::Experimental::Detail::RPageSinkRoot::fMetrics
private

Definition at line 68 of file RPageStorageRoot.hxx.

◆ fPageAllocator

std::unique_ptr<RPageAllocatorHeap> ROOT::Experimental::Detail::RPageSinkRoot::fPageAllocator
private

Definition at line 69 of file RPageStorageRoot.hxx.

◆ kDefaultElementsPerPage

constexpr std::size_t ROOT::Experimental::Detail::RPageSinkRoot::kDefaultElementsPerPage = 10000
staticconstexprprivate

Definition at line 66 of file RPageStorageRoot.hxx.

Libraries for ROOT::Experimental::Detail::RPageSinkRoot:
[legend]

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