Storage provider that write ntuple pages into a raw binary file.
Definition at line 47 of file RPageStorageRaw.hxx.
Public Member Functions | |
RPageSinkRaw (std::string_view ntupleName, std::string_view path, const RNTupleWriteOptions &options) | |
virtual | ~RPageSinkRaw () |
RNTupleMetrics & | GetMetrics () 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 RNTupleMetrics & | GetMetrics ()=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... | |
RPageStorage & | operator= (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 Member Functions | |
void | Write (const void *buffer, std::size_t nbytes) |
Private Attributes | |
size_t | fClusterStart = 0 |
FILE * | fFile = nullptr |
size_t | fFilePos = 0 |
RNTupleMetrics | fMetrics |
std::unique_ptr< RPageAllocatorHeap > | fPageAllocator |
std::unique_ptr< std::array< char, kMaxPageSize > > | fZipBuffer |
Static Private Attributes | |
static constexpr std::size_t | kDefaultElementsPerPage = 10000 |
static constexpr std::size_t | kMaxPageSize = 1024 * 1024 |
Cannot process pages larger than 1MB. 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::RPageSink | |
static std::unique_ptr< RPageSink > | Create (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::RColumnRange > | fOpenColumnRanges |
Keeps track of the number of elements in the currently open cluster. Indexed by column id. More... | |
std::vector< RClusterDescriptor::RPageRange > | fOpenPageRanges |
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/RPageStorageRaw.hxx>
ROOT::Experimental::Detail::RPageSinkRaw::RPageSinkRaw | ( | std::string_view | ntupleName, |
std::string_view | path, | ||
const RNTupleWriteOptions & | options | ||
) |
Definition at line 33 of file RPageStorageRaw.cxx.
|
virtual |
Definition at line 46 of file RPageStorageRaw.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 117 of file RPageStorageRaw.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 126 of file RPageStorageRaw.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 72 of file RPageStorageRaw.cxx.
|
finalprotectedvirtual |
Implements ROOT::Experimental::Detail::RPageSink.
Definition at line 60 of file RPageStorageRaw.cxx.
|
inlinefinalvirtual |
Page storage implementations usually have their own metrics.
Implements ROOT::Experimental::Detail::RPageStorage.
Definition at line 75 of file RPageStorageRaw.hxx.
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 145 of file RPageStorageRaw.cxx.
|
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 137 of file RPageStorageRaw.cxx.
|
private |
Definition at line 52 of file RPageStorageRaw.cxx.
|
private |
Definition at line 58 of file RPageStorageRaw.hxx.
|
private |
Definition at line 56 of file RPageStorageRaw.hxx.
|
private |
Definition at line 57 of file RPageStorageRaw.hxx.
|
private |
Definition at line 53 of file RPageStorageRaw.hxx.
|
private |
Definition at line 54 of file RPageStorageRaw.hxx.
|
private |
Definition at line 55 of file RPageStorageRaw.hxx.
|
staticconstexprprivate |
Definition at line 49 of file RPageStorageRaw.hxx.
|
staticconstexprprivate |
Cannot process pages larger than 1MB.
Definition at line 51 of file RPageStorageRaw.hxx.