Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
ROOT::Experimental::Internal::RNTupleAnchorS3 Class Reference

Entry point for an RNTuple stored in S3-compatible object storage.

The anchor is serialized as a JSON object and stored at the base URL of the ntuple. It contains the information needed to locate and read the header and footer envelopes. The anchor is always the last object written during CommitDatasetImpl, ensuring atomicity: if the anchor exists, the entire ntuple is complete.

Definition at line 38 of file RPageStorageS3.hxx.

Public Member Functions

bool operator== (const RNTupleAnchorS3 &other) const
 Field-by-field equality check across all 14 anchor members.
 
std::string ToJSON () const
 Serialize the anchor to a JSON string suitable for storage at the base URL.
 

Static Public Member Functions

static RResult< RNTupleAnchorS3CreateFromJSON (const std::string &json)
 Deserialize the anchor from a JSON string. Returns an error on malformed or incompatible input.
 

Public Attributes

std::uint64_t fFooterObjId = 0
 Object ID and byte offset of the compressed footer within the S3 object.
 
std::uint64_t fFooterOffset = 0
 
std::uint64_t fHeaderObjId = 0
 Object ID and byte offset of the compressed header within the S3 object.
 
std::uint64_t fHeaderOffset = 0
 
std::uint64_t fLenFooter = 0
 
std::uint64_t fLenHeader = 0
 
std::uint64_t fNBytesFooter = 0
 Compressed and uncompressed sizes of the footer envelope.
 
std::uint64_t fNBytesHeader = 0
 Compressed and uncompressed sizes of the header envelope.
 
std::string fUrlTemplate
 Pattern for resolving object IDs to full S3 URLs.
 
std::uint32_t fVersionAnchor = 0
 Allows evolving the anchor JSON schema in future versions.
 
std::uint16_t fVersionEpoch = RNTuple::kVersionEpoch
 Version of the RNTuple binary format supported by the writer.
 
std::uint16_t fVersionMajor = RNTuple::kVersionMajor
 
std::uint16_t fVersionMinor = RNTuple::kVersionMinor
 
std::uint16_t fVersionPatch = RNTuple::kVersionPatch
 

#include <ROOT/RPageStorageS3.hxx>

Member Function Documentation

◆ CreateFromJSON()

ROOT::RResult< ROOT::Experimental::Internal::RNTupleAnchorS3 > ROOT::Experimental::Internal::RNTupleAnchorS3::CreateFromJSON ( const std::string & json)
static

Deserialize the anchor from a JSON string. Returns an error on malformed or incompatible input.

Construct an anchor from a JSON string.

The anchor version is checked first; if it does not match the current version, parsing fails immediately. All remaining fields are extracted with jsonAnchor.at() which throws on missing keys or type mismatches.

Definition at line 60 of file RPageStorageS3.cxx.

◆ operator==()

bool ROOT::Experimental::Internal::RNTupleAnchorS3::operator== ( const RNTupleAnchorS3 & other) const

Field-by-field equality check across all 14 anchor members.

Used to verify round-trip correctness in tests.

Definition at line 21 of file RPageStorageS3.cxx.

◆ ToJSON()

std::string ROOT::Experimental::Internal::RNTupleAnchorS3::ToJSON ( ) const

Serialize the anchor to a JSON string suitable for storage at the base URL.

Serialize the anchor to a pretty-printed JSON string (2-space indent).

nlohmann/json handles type conversion, string escaping, and uint64 precision. The output is suitable for direct upload to S3 as the anchor object.

Definition at line 35 of file RPageStorageS3.cxx.

Member Data Documentation

◆ fFooterObjId

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fFooterObjId = 0

Object ID and byte offset of the compressed footer within the S3 object.

Definition at line 56 of file RPageStorageS3.hxx.

◆ fFooterOffset

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fFooterOffset = 0

Definition at line 57 of file RPageStorageS3.hxx.

◆ fHeaderObjId

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fHeaderObjId = 0

Object ID and byte offset of the compressed header within the S3 object.

Definition at line 50 of file RPageStorageS3.hxx.

◆ fHeaderOffset

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fHeaderOffset = 0

Definition at line 51 of file RPageStorageS3.hxx.

◆ fLenFooter

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fLenFooter = 0

Definition at line 60 of file RPageStorageS3.hxx.

◆ fLenHeader

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fLenHeader = 0

Definition at line 54 of file RPageStorageS3.hxx.

◆ fNBytesFooter

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fNBytesFooter = 0

Compressed and uncompressed sizes of the footer envelope.

Definition at line 59 of file RPageStorageS3.hxx.

◆ fNBytesHeader

std::uint64_t ROOT::Experimental::Internal::RNTupleAnchorS3::fNBytesHeader = 0

Compressed and uncompressed sizes of the header envelope.

Definition at line 53 of file RPageStorageS3.hxx.

◆ fUrlTemplate

std::string ROOT::Experimental::Internal::RNTupleAnchorS3::fUrlTemplate

Pattern for resolving object IDs to full S3 URLs.

${baseurl} is replaced with the anchor URL, ${objid} with the numeric object ID.

Definition at line 48 of file RPageStorageS3.hxx.

◆ fVersionAnchor

std::uint32_t ROOT::Experimental::Internal::RNTupleAnchorS3::fVersionAnchor = 0

Allows evolving the anchor JSON schema in future versions.

Definition at line 40 of file RPageStorageS3.hxx.

◆ fVersionEpoch

std::uint16_t ROOT::Experimental::Internal::RNTupleAnchorS3::fVersionEpoch = RNTuple::kVersionEpoch

Version of the RNTuple binary format supported by the writer.

Definition at line 42 of file RPageStorageS3.hxx.

◆ fVersionMajor

std::uint16_t ROOT::Experimental::Internal::RNTupleAnchorS3::fVersionMajor = RNTuple::kVersionMajor

Definition at line 43 of file RPageStorageS3.hxx.

◆ fVersionMinor

std::uint16_t ROOT::Experimental::Internal::RNTupleAnchorS3::fVersionMinor = RNTuple::kVersionMinor

Definition at line 44 of file RPageStorageS3.hxx.

◆ fVersionPatch

std::uint16_t ROOT::Experimental::Internal::RNTupleAnchorS3::fVersionPatch = RNTuple::kVersionPatch

Definition at line 45 of file RPageStorageS3.hxx.

Collaboration diagram for ROOT::Experimental::Internal::RNTupleAnchorS3:
[legend]

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