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

Storage provider that reads ntuple pages from a file.

Definition at line 111 of file RPageStorageFile.hxx.

Public Member Functions

 RPageSourceFile (std::string_view ntupleName, std::string_view path, const RNTupleReadOptions &options)
 
virtual ~RPageSourceFile ()
 
std::unique_ptr< RPageSourceClone () const final
 The cloned page source creates a new raw file and reader and opens its own file descriptor to the data. More...
 
RNTupleMetricsGetMetrics () final
 Page storage implementations usually have their own metrics. More...
 
RPage PopulatePage (ColumnHandle_t columnHandle, const RClusterIndex &clusterIndex) final
 Another version of PopulatePage that allows to specify cluster-relative indexes. More...
 
RPage PopulatePage (ColumnHandle_t columnHandle, NTupleSize_t globalIndex) final
 Allocates and fills a page that contains the index-th element. More...
 
void ReleasePage (RPage &page) final
 Every page store needs to be able to free pages it handed out. More...
 
- Public Member Functions inherited from ROOT::Experimental::Detail::RPageSource
 RPageSource (std::string_view ntupleName, const RNTupleReadOptions &fOptions)
 
virtual ~RPageSource ()
 
ColumnHandle_t AddColumn (DescriptorId_t fieldId, const RColumn &column) final
 Register a new column. More...
 
void Attach ()
 Open the physical storage container for the tree. More...
 
virtual std::unique_ptr< RPageSourceClone () const =0
 Open the same storage multiple time, e.g. for reading in multiple threads. More...
 
ColumnId_t GetColumnId (ColumnHandle_t columnHandle)
 
const RNTupleDescriptorGetDescriptor () const
 
NTupleSize_t GetNElements (ColumnHandle_t columnHandle)
 
NTupleSize_t GetNEntries ()
 
EPageStorageType GetType () final
 Whether the concrete implementation is a sink or a source. More...
 
virtual RPage PopulatePage (ColumnHandle_t columnHandle, const RClusterIndex &clusterIndex)=0
 Another version of PopulatePage that allows to specify cluster-relative indexes. More...
 
virtual RPage PopulatePage (ColumnHandle_t columnHandle, NTupleSize_t globalIndex)=0
 Allocates and fills a page that contains the index-th element. 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...
 

Static Public Attributes

static constexpr std::size_t kMaxPageSize = 1024 * 1024
 Cannot process pages larger than 1MB. More...
 

Protected Member Functions

RNTupleDescriptor AttachImpl () final
 
virtual RNTupleDescriptor AttachImpl ()=0
 

Private Member Functions

 RPageSourceFile (std::string_view ntupleName, const RNTupleReadOptions &options)
 
RPage PopulatePageFromCluster (ColumnHandle_t columnHandle, const RClusterDescriptor &clusterDescriptor, ClusterSize_t::ValueType clusterIndex)
 

Private Attributes

RNTupleDecompressor fDecompressor
 Helper to unzip pages and header/footer; comprises a 16MB unzip buffer. More...
 
std::unique_ptr< ROOT::Internal::RRawFilefFile
 An RRawFile is used to request the necessary byte ranges from a local or a remote file. More...
 
RNTupleMetrics fMetrics
 
std::unique_ptr< RPageAllocatorFilefPageAllocator
 Populated pages might be shared; there memory buffer is managed by the RPageAllocatorFile. More...
 
std::shared_ptr< RPagePoolfPagePool
 The page pool migh, at some point, be used by multiple page sources. More...
 
Internal::RMiniFileReader fReader
 Takes the fFile to read ntuple blobs from it. More...
 

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::RPageSource
static std::unique_ptr< RPageSourceCreate (std::string_view ntupleName, std::string_view location, const RNTupleReadOptions &options=RNTupleReadOptions())
 Guess the concrete derived page source from the file name (location) More...
 
- Protected Attributes inherited from ROOT::Experimental::Detail::RPageSource
RNTupleDescriptor fDescriptor
 
const RNTupleReadOptions fOptions
 
- Protected Attributes inherited from ROOT::Experimental::Detail::RPageStorage
std::string fNTupleName
 

#include <ROOT/RPageStorageFile.hxx>

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

Constructor & Destructor Documentation

◆ RPageSourceFile() [1/2]

ROOT::Experimental::Detail::RPageSourceFile::RPageSourceFile ( std::string_view  ntupleName,
const RNTupleReadOptions options 
)
private

Definition at line 199 of file RPageStorageFile.cxx.

◆ RPageSourceFile() [2/2]

ROOT::Experimental::Detail::RPageSourceFile::RPageSourceFile ( std::string_view  ntupleName,
std::string_view  path,
const RNTupleReadOptions options 
)

Definition at line 209 of file RPageStorageFile.cxx.

◆ ~RPageSourceFile()

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

Definition at line 219 of file RPageStorageFile.cxx.

Member Function Documentation

◆ AttachImpl()

ROOT::Experimental::RNTupleDescriptor ROOT::Experimental::Detail::RPageSourceFile::AttachImpl ( )
finalprotectedvirtual

Implements ROOT::Experimental::Detail::RPageSource.

Definition at line 224 of file RPageStorageFile.cxx.

◆ Clone()

std::unique_ptr< ROOT::Experimental::Detail::RPageSource > ROOT::Experimental::Detail::RPageSourceFile::Clone ( ) const
finalvirtual

The cloned page source creates a new raw file and reader and opens its own file descriptor to the data.

The meta-data (header and footer) is reread and parsed by the clone.

Implements ROOT::Experimental::Detail::RPageSource.

Definition at line 336 of file RPageStorageFile.cxx.

◆ GetMetrics()

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

Page storage implementations usually have their own metrics.

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

Definition at line 147 of file RPageStorageFile.hxx.

◆ PopulatePage() [1/2]

ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSourceFile::PopulatePage ( ColumnHandle_t  columnHandle,
const RClusterIndex clusterIndex 
)
finalvirtual

Another version of PopulatePage that allows to specify cluster-relative indexes.

Implements ROOT::Experimental::Detail::RPageSource.

Definition at line 316 of file RPageStorageFile.cxx.

◆ PopulatePage() [2/2]

ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSourceFile::PopulatePage ( ColumnHandle_t  columnHandle,
NTupleSize_t  globalIndex 
)
finalvirtual

Allocates and fills a page that contains the index-th element.

Implements ROOT::Experimental::Detail::RPageSource.

Definition at line 299 of file RPageStorageFile.cxx.

◆ PopulatePageFromCluster()

ROOT::Experimental::Detail::RPage ROOT::Experimental::Detail::RPageSourceFile::PopulatePageFromCluster ( ColumnHandle_t  columnHandle,
const RClusterDescriptor clusterDescriptor,
ClusterSize_t::ValueType  clusterIndex 
)
private

Definition at line 245 of file RPageStorageFile.cxx.

◆ ReleasePage()

void ROOT::Experimental::Detail::RPageSourceFile::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 331 of file RPageStorageFile.cxx.

Member Data Documentation

◆ fDecompressor

RNTupleDecompressor ROOT::Experimental::Detail::RPageSourceFile::fDecompressor
private

Helper to unzip pages and header/footer; comprises a 16MB unzip buffer.

Definition at line 123 of file RPageStorageFile.hxx.

◆ fFile

std::unique_ptr<ROOT::Internal::RRawFile> ROOT::Experimental::Detail::RPageSourceFile::fFile
private

An RRawFile is used to request the necessary byte ranges from a local or a remote file.

Definition at line 125 of file RPageStorageFile.hxx.

◆ fMetrics

RNTupleMetrics ROOT::Experimental::Detail::RPageSourceFile::fMetrics
private

Definition at line 117 of file RPageStorageFile.hxx.

◆ fPageAllocator

std::unique_ptr<RPageAllocatorFile> ROOT::Experimental::Detail::RPageSourceFile::fPageAllocator
private

Populated pages might be shared; there memory buffer is managed by the RPageAllocatorFile.

Definition at line 119 of file RPageStorageFile.hxx.

◆ fPagePool

std::shared_ptr<RPagePool> ROOT::Experimental::Detail::RPageSourceFile::fPagePool
private

The page pool migh, at some point, be used by multiple page sources.

Definition at line 121 of file RPageStorageFile.hxx.

◆ fReader

Internal::RMiniFileReader ROOT::Experimental::Detail::RPageSourceFile::fReader
private

Takes the fFile to read ntuple blobs from it.

Definition at line 127 of file RPageStorageFile.hxx.

◆ kMaxPageSize

constexpr std::size_t ROOT::Experimental::Detail::RPageSourceFile::kMaxPageSize = 1024 * 1024
staticconstexpr

Cannot process pages larger than 1MB.

Definition at line 114 of file RPageStorageFile.hxx.

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

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