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>

## ◆ ColumnSet_t

 using ROOT::Experimental::Detail::RCluster::ColumnSet_t = std::unordered_set

Definition at line 156 of file RCluster.hxx.

## ◆ 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

## ◆ 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.

## ◆ 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 ROOT::Experimental::Detail::RCluster::fOnDiskPages
protected

Lookup table for the on-disk pages.

Definition at line 171 of file RCluster.hxx.

## ◆ fPageMaps

 std::vector > ROOT::Experimental::Detail::RCluster::fPageMaps
protected

Multiple page maps can be combined in a single RCluster.

Definition at line 167 of file RCluster.hxx.

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

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