16#ifndef ROOT7_RPagePool
17#define ROOT7_RPagePool
30namespace Experimental {
121 if (
this != &other) {
122 std::swap(
fPage, other.fPage);
A thread-safe cache of pages loaded from the page source.
std::vector< RPage > fPages
TODO(jblomer): should be an efficient index structure that allows.
RPagePool & operator=(const RPagePool &)=delete
RPageRef GetPage(ColumnId_t columnId, std::type_index inMemoryType, NTupleSize_t globalIndex)
Tries to find the page corresponding to column and index in the cache.
std::vector< std::int32_t > fReferences
RPagePool(const RPagePool &)=delete
void ReleasePage(const RPage &page)
Give back a page to the pool and decrease the reference counter.
RPageRef RegisterPage(RPage page, std::type_index inMemoryType)
Adds a new page to the pool.
void PreloadPage(RPage page, std::type_index inMemoryType)
Like RegisterPage() but the reference counter is initialized to 0.
std::vector< RPageInfo > fPageInfos
Stores information about the cluster in which this page resides.
NTupleSize_t GetIndexOffset() const
A page is a slice of a column that is mapped into memory.
RClusterInfo fClusterInfo
std::uint32_t fMaxElements
The capacity of the page in number of elements.
std::uint32_t fElementSize
Addresses a column element or field item relative to a particular cluster, instead of a global NTuple...
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.
tbb::task_arena is an alias of tbb::interface7::task_arena, which doesn't allow to forward declare tb...
std::type_index fInMemoryType