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

An in-memory subset of the packed and compressed pages of a cluster.

Binds together several page maps that represent all the pages of certain columns of a cluster

Definition at line 154 of file RCluster.hxx.

Classes

struct  RKey
 The identifiers that specifies the content of a (partial) cluster. More...
 

Public Types

using ColumnSet_t = std::unordered_set< DescriptorId_t >
 

Public Member Functions

 RCluster (const RCluster &other)=delete
 
 RCluster (DescriptorId_t clusterId)
 
 RCluster (RCluster &&other)=default
 
 ~RCluster ()=default
 
void Adopt (RCluster &&other)
 Move the contents of other into this cluster; for on-disk pages that are present in both the cluster at hand and the "other" cluster, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation). More...
 
void Adopt (std::unique_ptr< ROnDiskPageMap > pageMap)
 Move the given page map into this cluster; for on-disk pages that are present in both the cluster at hand and pageMap, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation). More...
 
bool ContainsColumn (DescriptorId_t columnId) const
 
const ColumnSet_tGetAvailColumns () const
 
DescriptorId_t GetId () const
 
size_t GetNOnDiskPages () const
 
const ROnDiskPageGetOnDiskPage (const ROnDiskPage::Key &key) const
 
RClusteroperator= (const RCluster &other)=delete
 
RClusteroperator= (RCluster &&other)=default
 
void SetColumnAvailable (DescriptorId_t columnId)
 Marks the column as complete; must be done for all columns, even empty ones without associated pages, before the cluster is given from the page storage to the cluster pool. More...
 

Protected Attributes

ColumnSet_t fAvailColumns
 Set of the (complete) columns represented by the RCluster. More...
 
DescriptorId_t fClusterId
 References the cluster identifier in the page source that created the cluster. More...
 
std::unordered_map< ROnDiskPage::Key, ROnDiskPagefOnDiskPages
 Lookup table for the on-disk pages. More...
 
std::vector< std::unique_ptr< ROnDiskPageMap > > fPageMaps
 Multiple page maps can be combined in a single RCluster. More...
 

#include <ROOT/RCluster.hxx>

Member Typedef Documentation

◆ ColumnSet_t

Definition at line 156 of file RCluster.hxx.

Constructor & Destructor Documentation

◆ RCluster() [1/3]

ROOT::Experimental::Detail::RCluster::RCluster ( DescriptorId_t  clusterId)
inlineexplicit

Definition at line 174 of file RCluster.hxx.

◆ RCluster() [2/3]

ROOT::Experimental::Detail::RCluster::RCluster ( const RCluster other)
delete

◆ RCluster() [3/3]

ROOT::Experimental::Detail::RCluster::RCluster ( RCluster &&  other)
default

◆ ~RCluster()

ROOT::Experimental::Detail::RCluster::~RCluster ( )
default

Member Function Documentation

◆ Adopt() [1/2]

void ROOT::Experimental::Detail::RCluster::Adopt ( RCluster &&  other)

Move the contents of other into this cluster; for on-disk pages that are present in both the cluster at hand and the "other" cluster, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation).

Definition at line 54 of file RCluster.cxx.

◆ Adopt() [2/2]

void ROOT::Experimental::Detail::RCluster::Adopt ( std::unique_ptr< ROnDiskPageMap pageMap)

Move the given page map into this cluster; for on-disk pages that are present in both the cluster at hand and pageMap, GetOnDiskPage() may return the page from either of the memory regions (left to the implementation).

Their content is supposed to be the same. Page maps cannot be physically merged them because they have potentially used different allocation mechanisms (e.g. mmap vs. malloc).

Definition at line 45 of file RCluster.cxx.

◆ ContainsColumn()

bool ROOT::Experimental::Detail::RCluster::ContainsColumn ( DescriptorId_t  columnId) const
inline

Definition at line 199 of file RCluster.hxx.

◆ GetAvailColumns()

const ColumnSet_t & ROOT::Experimental::Detail::RCluster::GetAvailColumns ( ) const
inline

Definition at line 198 of file RCluster.hxx.

◆ GetId()

DescriptorId_t ROOT::Experimental::Detail::RCluster::GetId ( ) const
inline

Definition at line 197 of file RCluster.hxx.

◆ GetNOnDiskPages()

size_t ROOT::Experimental::Detail::RCluster::GetNOnDiskPages ( ) const
inline

Definition at line 200 of file RCluster.hxx.

◆ GetOnDiskPage()

const ROOT::Experimental::Detail::ROnDiskPage * ROOT::Experimental::Detail::RCluster::GetOnDiskPage ( const ROnDiskPage::Key key) const

Definition at line 37 of file RCluster.cxx.

◆ operator=() [1/2]

RCluster & ROOT::Experimental::Detail::RCluster::operator= ( const RCluster other)
delete

◆ operator=() [2/2]

RCluster & ROOT::Experimental::Detail::RCluster::operator= ( RCluster &&  other)
default

◆ SetColumnAvailable()

void ROOT::Experimental::Detail::RCluster::SetColumnAvailable ( DescriptorId_t  columnId)

Marks the column as complete; must be done for all columns, even empty ones without associated pages, before the cluster is given from the page storage to the cluster pool.

Marking the available columns is typically the last step of RPageSouce::LoadCluster().

Definition at line 70 of file RCluster.cxx.

Member Data Documentation

◆ fAvailColumns

ColumnSet_t ROOT::Experimental::Detail::RCluster::fAvailColumns
protected

Set of the (complete) columns represented by the RCluster.

Definition at line 169 of file RCluster.hxx.

◆ fClusterId

DescriptorId_t ROOT::Experimental::Detail::RCluster::fClusterId
protected

References the cluster identifier in the page source that created the cluster.

Definition at line 165 of file RCluster.hxx.

◆ fOnDiskPages

std::unordered_map<ROnDiskPage::Key, ROnDiskPage> ROOT::Experimental::Detail::RCluster::fOnDiskPages
protected

Lookup table for the on-disk pages.

Definition at line 171 of file RCluster.hxx.

◆ fPageMaps

std::vector<std::unique_ptr<ROnDiskPageMap> > ROOT::Experimental::Detail::RCluster::fPageMaps
protected

Multiple page maps can be combined in a single RCluster.

Definition at line 167 of file RCluster.hxx.


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