Storage provider that reads ntuple pages from a DAOS container.
Definition at line 149 of file RPageStorageDaos.hxx.
Private Member Functions | |
RPageRef | LoadPageImpl (ColumnHandle_t columnHandle, const RClusterInfo &clusterInfo, ROOT::NTupleSize_t idxInCluster) final |
Private Attributes | |
std::unique_ptr< RClusterPool > | fClusterPool |
The cluster pool asynchronously preloads the next few clusters. | |
RCluster * | fCurrentCluster = nullptr |
The last cluster from which a page got loaded. Points into fClusterPool->fPool. | |
std::unique_ptr< RDaosContainer > | fDaosContainer |
A container that stores object data (header/footer, pages, etc.) | |
RNTupleDescriptorBuilder | fDescriptorBuilder |
ntuple_index_t | fNTupleIndex {0} |
std::string | fURI |
A URI to a DAOS pool of the form 'daos://pool-label/container-label'. | |
Additional Inherited Members | |
![]() | |
using | ColumnHandle_t = RColumnHandle |
The column handle identifies a column with the current open page storage. | |
using | SealedPageSequence_t = std::deque<RSealedPage> |
![]() | |
static std::unique_ptr< RPageSource > | Create (std::string_view ntupleName, std::string_view location, const RNTupleReadOptions &options=RNTupleReadOptions()) |
Guess the concrete derived page source from the file name (location) | |
static RResult< RPage > | UnsealPage (const RSealedPage &sealedPage, const RColumnElementBase &element, RPageAllocator &pageAlloc) |
Helper for unstreaming a page. | |
![]() | |
static constexpr std::size_t | kNBytesPageChecksum = sizeof(std::uint64_t) |
The page checksum is a 64bit xxhash3. | |
![]() | |
RActivePhysicalColumns | fActivePhysicalColumns |
The active columns are implicitly defined by the model fields or views. | |
std::unique_ptr< RCounters > | fCounters |
RNTupleReadOptions | fOptions |
RPagePool | fPagePool |
Pages that are unzipped with IMT are staged into the page pool. | |
![]() | |
Detail::RNTupleMetrics | fMetrics |
std::string | fNTupleName |
std::unique_ptr< RPageAllocator > | fPageAllocator |
For the time being, we will use the heap allocator for all sources and sinks. This may change in the future. | |
RTaskScheduler * | fTaskScheduler = nullptr |
#include <ROOT/RPageStorageDaos.hxx>
ROOT::Experimental::Internal::RPageSourceDaos::RPageSourceDaos | ( | std::string_view | ntupleName, |
std::string_view | uri, | ||
const RNTupleReadOptions & | options ) |
Definition at line 491 of file RPageStorageDaos.cxx.
|
overridedefault |
|
finalprotectedvirtual |
LoadStructureImpl()
has been called before AttachImpl()
is called
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 507 of file RPageStorageDaos.cxx.
|
finalprotectedvirtual |
The cloned page source creates a new connection to the pool/container.
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 665 of file RPageStorageDaos.cxx.
std::string ROOT::Experimental::Internal::RPageSourceDaos::GetObjectClass | ( | ) | const |
Return the object class used for user data OIDs in this ntuple.
Definition at line 542 of file RPageStorageDaos.cxx.
|
finalvirtual |
Populates all the pages of the given cluster ids and columns; it is possible that some columns do not contain any pages.
The page source may load more columns than the minimal necessary set from columns
. To indicate which columns have been loaded, LoadClusters()
must mark them with
SetColumnAvailable(). That includes the ones from the
columnsthat don't have pages; otherwise subsequent requests for the cluster would assume an incomplete cluster and trigger loading again.
LoadClusters()` is typically called from the I/O thread of a cluster pool, i.e. the method runs concurrently to other methods of the page source.
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 672 of file RPageStorageDaos.cxx.
|
finalprivatevirtual |
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 594 of file RPageStorageDaos.cxx.
|
finalvirtual |
Read the packed and compressed bytes of a page into the memory buffer provided by sealedPage
.
The sealed page can be used subsequently in a call to RPageSink::CommitSealedPage
. The fSize
and fNElements
member of the sealedPage parameters are always set. If sealedPage.fBuffer
is nullptr
, no data will be copied but the returned size information can be used by the caller to allocate a large enough buffer and call LoadSealedPage
again.
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 547 of file RPageStorageDaos.cxx.
|
inlinefinalprotectedvirtual |
Implements ROOT::Experimental::Internal::RPageSource.
Definition at line 168 of file RPageStorageDaos.hxx.
|
private |
The cluster pool asynchronously preloads the next few clusters.
Definition at line 160 of file RPageStorageDaos.hxx.
|
private |
The last cluster from which a page got loaded. Points into fClusterPool->fPool.
Definition at line 154 of file RPageStorageDaos.hxx.
|
private |
A container that stores object data (header/footer, pages, etc.)
Definition at line 156 of file RPageStorageDaos.hxx.
|
private |
Definition at line 162 of file RPageStorageDaos.hxx.
|
private |
Definition at line 151 of file RPageStorageDaos.hxx.
|
private |
A URI to a DAOS pool of the form 'daos://pool-label/container-label'.
Definition at line 158 of file RPageStorageDaos.hxx.