15#ifndef ROOT_RPageStorageDaos
16#define ROOT_RPageStorageDaos
83 std::uint32_t
Serialize(
void *buffer)
const;
120 void InitImpl(
unsigned char *serializedHeader, std::uint32_t length)
final;
124 std::vector<RNTupleLocator>
125 CommitSealedPageVImpl(std::span<RPageStorage::RSealedPageGroup> ranges,
const std::vector<bool> &mask)
final;
169 std::unique_ptr<RPageSource> CloneImpl() const final;
182 std::
string GetObjectClass() const;
184 void LoadStreamerInfo() final;
A RDaosContainer provides read/write access to objects in a given container.
A RDaosPool provides access to containers in a specific DAOS pool.
Storage provider that writes ntuple pages to into a DAOS container.
std::unique_ptr< ROOT::Internal::RPageSink > CloneAsHidden(std::string_view name, const ROOT::RNTupleWriteOptions &opts) const final
Creates a new sink with the same underlying storage as this but writing to a different RNTuple named ...
std::unique_ptr< RDaosContainer > fDaosContainer
Underlying DAOS container.
RNTupleLocator CommitPageImpl(ColumnHandle_t columnHandle, const ROOT::Internal::RPage &page) final
ntuple_index_t fNTupleIndex
std::uint64_t fNBytesCurrentCluster
Tracks the number of bytes committed to the current cluster.
std::vector< RNTupleLocator > CommitSealedPageVImpl(std::span< RPageStorage::RSealedPageGroup > ranges, const std::vector< bool > &mask) final
Vector commit of preprocessed pages.
std::string fURI
A URI to a DAOS pool of the form 'daos://pool-label/container-label'.
RDaosNTupleAnchor fNTupleAnchor
void WriteNTupleFooter(const void *data, size_t nbytes, size_t lenFooter)
std::uint64_t StageClusterImpl() final
Returns the number of bytes written to storage (excluding metadata).
RNTupleLocator CommitClusterGroupImpl(unsigned char *serializedPageList, std::uint32_t length) final
Returns the locator of the page list envelope of the given buffer that contains the serialized page l...
void WriteNTupleHeader(const void *data, size_t nbytes, size_t lenHeader)
void InitImpl(unsigned char *serializedHeader, std::uint32_t length) final
std::atomic< std::uint64_t > fPageId
Page identifier for the next committed page; it is automatically incremented in CommitSealedPageImpl(...
std::atomic< std::uint64_t > fClusterGroupId
Cluster group counter for the next committed cluster pagelist; incremented in CommitClusterGroupImpl(...
RNTupleLink CommitDatasetImpl() final
RPageSinkDaos(std::string_view ntupleName, std::string_view uri, const ROOT::RNTupleWriteOptions &options)
RNTupleLocator CommitSealedPageImpl(ROOT::DescriptorId_t physicalColumnId, const RPageStorage::RSealedPage &sealedPage) final
Storage provider that reads ntuple pages from a DAOS container.
ROOT::Internal::RPageRef LoadPageImpl(ColumnHandle_t columnHandle, const RClusterInfo &clusterInfo, ROOT::NTupleSize_t idxInCluster) final
void LoadStructureImpl() final
std::string fURI
A URI to a DAOS pool of the form 'daos://pool-label/container-label'.
ntuple_index_t fNTupleIndex
ROOT::Internal::RNTupleDescriptorBuilder fDescriptorBuilder
std::unique_ptr< RDaosContainer > fDaosContainer
A container that stores object data (header/footer, pages, etc.).
ROOT::Internal::RCluster * fCurrentCluster
The last cluster from which a page got loaded. Points into fClusterPool->fPool.
RPageSourceDaos(std::string_view ntupleName, std::string_view uri, const ROOT::RNTupleReadOptions &options)
An in-memory subset of the packed and compressed pages of a cluster.
A helper class for piece-wise construction of an RNTupleDescriptor.
EDescriptorDeserializeMode
Uses standard C++ memory allocation for the column data pages.
Base class for a sink with a physical storage backend.
virtual void InitImpl(unsigned char *serializedHeader, std::uint32_t length)=0
RPageSink(std::string_view ntupleName, const ROOT::RNTupleWriteOptions &options)
Abstract interface to read data from an ntuple.
RPageSource(std::string_view ntupleName, const ROOT::RNTupleReadOptions &fOptions)
RColumnHandle ColumnHandle_t
The column handle identifies a column with the current open page storage.
A page is a slice of a column that is mapped into memory.
The on-storage metadata of an RNTuple.
Addresses a column element or field item relative to a particular cluster, instead of a global NTuple...
Generic information about the physical location of data.
Common user-tunable settings for reading RNTuples.
Common user-tunable settings for storing RNTuples.
static constexpr std::uint16_t kVersionPatch
static constexpr std::uint16_t kVersionMajor
static constexpr std::uint16_t kVersionEpoch
static constexpr std::uint16_t kVersionMinor
The class is used as a return type for operations that can fail; wraps a value of type T or an RError...
std::uint32_t ntuple_index_t
Namespace for ROOT features in testing.
std::uint64_t DescriptorId_t
Distriniguishes elements of the same type within a descriptor, e.g. different fields.
std::uint64_t NTupleSize_t
Integer type long enough to hold the maximum number of entries in a column.
Entry point for an RNTuple in a DAOS container.
std::uint32_t fNBytesFooter
The size of the compressed ntuple footer.
std::uint64_t fVersionAnchor
Allows for evolving the struct in future versions.
bool operator==(const RDaosNTupleAnchor &other) const
std::string fObjClass
The object class for user data OIDs, e.g. SX.
std::uint16_t fVersionPatch
std::uint32_t Serialize(void *buffer) const
std::uint16_t fVersionEpoch
Version of the binary format supported by the writer.
std::uint16_t fVersionMinor
RResult< std::uint32_t > Deserialize(const void *buffer, std::uint32_t bufSize)
std::uint32_t fLenHeader
The size of the uncompressed ntuple header.
static std::uint32_t GetSize()
std::uint32_t fLenFooter
The size of the uncompressed ntuple footer.
std::uint16_t fVersionMajor
std::uint32_t fNBytesHeader
The size of the compressed ntuple header.
Summarizes cluster-level information that are necessary to load a certain page.
A sealed page contains the bytes of a page as written to storage (packed & compressed).