16#ifndef ROOT7_RPageStorageRoot
17#define ROOT7_RPageStorageRoot
31#include <unordered_map>
34namespace Experimental {
A collection of Counter objects with a name, a unit, and a description.
Adopts the memory returned by TKey->ReadObject()
static RPage NewPage(ColumnId_t columnId, void *mem, std::size_t elementSize, std::size_t nElements)
static void DeletePage(const RPage &page, ROOT::Experimental::Internal::RNTupleBlob *payload)
Storage provider that write ntuple pages into a ROOT TFile.
RNTupleMetrics & GetMetrics() final
Page storage implementations usually have their own metrics.
void DoCreate(const RNTupleModel &model) final
RClusterDescriptor::RLocator DoCommitCluster(NTupleSize_t nEntries) final
std::unique_ptr< TFile > fFile
Currently, an ntuple is stored as a directory in a TFile.
DescriptorId_t fLastPageIdx
Instead of a physical file offset, pages in root are identified by an index which becomes part of the...
void ReleasePage(RPage &page) final
Every page store needs to be able to free pages it handed out.
RClusterDescriptor::RLocator DoCommitPage(ColumnHandle_t columnHandle, const RPage &page) final
std::unique_ptr< RPageAllocatorHeap > fPageAllocator
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.
static constexpr std::size_t kDefaultElementsPerPage
void DoCommitDataset() final
Abstract interface to write data into an ntuple.
Storage provider that reads ntuple pages from a ROOT TFile.
std::unique_ptr< TFile > fFile
Currently, an ntuple is stored as a directory in a TFile.
RPage PopulatePage(ColumnHandle_t columnHandle, NTupleSize_t globalIndex) final
Allocates and fills a page that contains the index-th element.
std::unique_ptr< RPageSource > Clone() const final
Open the same storage multiple time, e.g. for reading in multiple threads.
RNTupleMetrics & GetMetrics() final
Page storage implementations usually have their own metrics.
std::shared_ptr< RPagePool > fPagePool
RPage PopulatePageFromCluster(ColumnHandle_t columnHandle, const RClusterDescriptor &clusterDescriptor, ClusterSize_t::ValueType clusterIndex)
void ReleasePage(RPage &page) final
Every page store needs to be able to free pages it handed out.
RNTupleDescriptor DoAttach() final
std::unique_ptr< RPageAllocatorKey > fPageAllocator
Abstract interface to read data from an ntuple.
A page is a slice of a column that is mapped into memory.
Meta-data for a set of ntuple clusters.
Addresses a column element or field item relative to a particular cluster, instead of a global NTuple...
The on-storage meta-data of an ntuple.
The RNTupleModel encapulates the schema of an ntuple.
Common user-tunable settings for reading ntuples.
Common user-tunable settings for storing ntuples.
Describe directory structure in memory.
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.
std::int64_t ColumnId_t
Uniquely identifies a physical column within the scope of the current process, used to tag pages.
RNTupleBlob & operator=(const RNTupleBlob &other)=delete
RNTupleBlob(int size, unsigned char *content)
RNTupleBlob(const RNTupleBlob &other)=delete
Generic information about the physical location of data.