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

Write RNTuple data blocks in a TFile or a bare file container.

The writer can create a new TFile container for an RNTuple or add an RNTuple to an existing TFile. Creating a single RNTuple in a new TFile container can be done with a C file stream without a TFile class. Updating an existing TFile requires a proper TFile object. Also, writing a remote file requires a proper TFile object. A stand-alone version of RNTuple can remove the TFile based writer.

Definition at line 93 of file RMiniFile.hxx.

Classes

struct  RFileProper
 
struct  RFileSimple
 

Public Types

enum class  EContainerFormat { kTFile , kBare }
 For testing purposes, RNTuple data can be written into a bare file container instead of a ROOT file. More...
 

Public Member Functions

 RNTupleFileWriter (const RNTupleFileWriter &other)=delete
 
 RNTupleFileWriter (RNTupleFileWriter &&other)=delete
 
 ~RNTupleFileWriter ()
 
void Commit ()
 Writes the RNTuple key to the file so that the header and footer keys can be found.
 
RNTupleFileWriteroperator= (const RNTupleFileWriter &other)=delete
 
RNTupleFileWriteroperator= (RNTupleFileWriter &&other)=delete
 
std::uint64_t ReserveBlob (size_t nbytes, size_t len)
 Reserves a new record as an RBlob key in the file.
 
std::uint64_t WriteBlob (const void *data, size_t nbytes, size_t len)
 Writes a new record as an RBlob key into the file.
 
void WriteIntoReservedBlob (const void *buffer, size_t nbytes, std::int64_t offset)
 Write into a reserved record; the caller is responsible for making sure that the written byte range is in the previously reserved key.
 
std::uint64_t WriteNTupleFooter (const void *data, size_t nbytes, size_t lenFooter)
 Writes the compressed footer and registeres its location; lenFooter is the size of the uncompressed footer.
 
std::uint64_t WriteNTupleHeader (const void *data, size_t nbytes, size_t lenHeader)
 Writes the compressed header and registeres its location; lenHeader is the size of the uncompressed header.
 

Static Public Member Functions

static RNTupleFileWriterAppend (std::string_view ntupleName, TFile &file)
 Add a new RNTuple identified by ntupleName to the existing TFile.
 
static RNTupleFileWriterRecreate (std::string_view ntupleName, std::string_view path, int defaultCompression, EContainerFormat containerFormat)
 Create or truncate the local file given by path with the new empty RNTuple identified by ntupleName.
 

Private Member Functions

 RNTupleFileWriter (std::string_view name)
 
void WriteBareFileSkeleton (int defaultCompression)
 For a bare file, which is necessarily written by a C file stream, write file header.
 
void WriteTFileFreeList ()
 Last record in the file.
 
void WriteTFileKeysList ()
 Write the TList with the RNTuple key.
 
void WriteTFileNTupleKey ()
 The only key that will be visible in file->ls()
 
void WriteTFileSkeleton (int defaultCompression)
 For a TFile container written by a C file stream, write the header and TFile object.
 
void WriteTFileStreamerInfo ()
 Write the compressed streamer info record with the description of the RNTuple class.
 

Private Attributes

std::string fFileName
 The file name without parent directory; only required when writing with a C file stream.
 
RFileProper fFileProper
 For updating existing files and for storing more than just an RNTuple in the file.
 
RFileSimple fFileSimple
 For simple use cases, survives without libRIO dependency.
 
bool fIsBare = false
 A simple file can either be written as TFile container or as NTuple bare file.
 
RNTuple fNTupleAnchor
 Header and footer location of the ntuple, written on Commit()
 
std::string fNTupleName
 The identifier of the RNTuple; A single writer object can only write a single RNTuple but multiple writers can operate on the same file if (and only if) they use a proper TFile object for writing.
 

#include <ROOT/RMiniFile.hxx>

Member Enumeration Documentation

◆ EContainerFormat

For testing purposes, RNTuple data can be written into a bare file container instead of a ROOT file.

Enumerator
kTFile 
kBare 

Definition at line 165 of file RMiniFile.hxx.

Constructor & Destructor Documentation

◆ RNTupleFileWriter() [1/3]

ROOT::Experimental::Internal::RNTupleFileWriter::RNTupleFileWriter ( std::string_view  name)
explicitprivate

Definition at line 1281 of file RMiniFile.cxx.

◆ RNTupleFileWriter() [2/3]

ROOT::Experimental::Internal::RNTupleFileWriter::RNTupleFileWriter ( const RNTupleFileWriter other)
delete

◆ RNTupleFileWriter() [3/3]

ROOT::Experimental::Internal::RNTupleFileWriter::RNTupleFileWriter ( RNTupleFileWriter &&  other)
delete

◆ ~RNTupleFileWriter()

ROOT::Experimental::Internal::RNTupleFileWriter::~RNTupleFileWriter ( )

Definition at line 1288 of file RMiniFile.cxx.

Member Function Documentation

◆ Append()

ROOT::Experimental::Internal::RNTupleFileWriter * ROOT::Experimental::Internal::RNTupleFileWriter::Append ( std::string_view  ntupleName,
TFile file 
)
static

Add a new RNTuple identified by ntupleName to the existing TFile.

Definition at line 1326 of file RMiniFile.cxx.

◆ Commit()

void ROOT::Experimental::Internal::RNTupleFileWriter::Commit ( )

Writes the RNTuple key to the file so that the header and footer keys can be found.

Definition at line 1335 of file RMiniFile.cxx.

◆ operator=() [1/2]

RNTupleFileWriter & ROOT::Experimental::Internal::RNTupleFileWriter::operator= ( const RNTupleFileWriter other)
delete

◆ operator=() [2/2]

RNTupleFileWriter & ROOT::Experimental::Internal::RNTupleFileWriter::operator= ( RNTupleFileWriter &&  other)
delete

◆ Recreate()

ROOT::Experimental::Internal::RNTupleFileWriter * ROOT::Experimental::Internal::RNTupleFileWriter::Recreate ( std::string_view  ntupleName,
std::string_view  path,
int  defaultCompression,
EContainerFormat  containerFormat 
)
static

Create or truncate the local file given by path with the new empty RNTuple identified by ntupleName.

Uses a C stream for writing

Definition at line 1293 of file RMiniFile.cxx.

◆ ReserveBlob()

std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::ReserveBlob ( size_t  nbytes,
size_t  len 
)

Reserves a new record as an RBlob key in the file.

Definition at line 1384 of file RMiniFile.cxx.

◆ WriteBareFileSkeleton()

void ROOT::Experimental::Internal::RNTupleFileWriter::WriteBareFileSkeleton ( int  defaultCompression)
private

For a bare file, which is necessarily written by a C file stream, write file header.

Definition at line 1432 of file RMiniFile.cxx.

◆ WriteBlob()

std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::WriteBlob ( const void *  data,
size_t  nbytes,
size_t  len 
)

Writes a new record as an RBlob key into the file.

Definition at line 1367 of file RMiniFile.cxx.

◆ WriteIntoReservedBlob()

void ROOT::Experimental::Internal::RNTupleFileWriter::WriteIntoReservedBlob ( const void *  buffer,
size_t  nbytes,
std::int64_t  offset 
)

Write into a reserved record; the caller is responsible for making sure that the written byte range is in the previously reserved key.

Definition at line 1400 of file RMiniFile.cxx.

◆ WriteNTupleFooter()

std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::WriteNTupleFooter ( const void *  data,
size_t  nbytes,
size_t  lenFooter 
)

Writes the compressed footer and registeres its location; lenFooter is the size of the uncompressed footer.

Definition at line 1421 of file RMiniFile.cxx.

◆ WriteNTupleHeader()

std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::WriteNTupleHeader ( const void *  data,
size_t  nbytes,
size_t  lenHeader 
)

Writes the compressed header and registeres its location; lenHeader is the size of the uncompressed header.

Definition at line 1410 of file RMiniFile.cxx.

◆ WriteTFileFreeList()

void ROOT::Experimental::Internal::RNTupleFileWriter::WriteTFileFreeList ( )
private

Last record in the file.

Definition at line 1508 of file RMiniFile.cxx.

◆ WriteTFileKeysList()

void ROOT::Experimental::Internal::RNTupleFileWriter::WriteTFileKeysList ( )
private

Write the TList with the RNTuple key.

Definition at line 1479 of file RMiniFile.cxx.

◆ WriteTFileNTupleKey()

void ROOT::Experimental::Internal::RNTupleFileWriter::WriteTFileNTupleKey ( )
private

The only key that will be visible in file->ls()

Definition at line 1525 of file RMiniFile.cxx.

◆ WriteTFileSkeleton()

void ROOT::Experimental::Internal::RNTupleFileWriter::WriteTFileSkeleton ( int  defaultCompression)
private

For a TFile container written by a C file stream, write the header and TFile object.

Definition at line 1537 of file RMiniFile.cxx.

◆ WriteTFileStreamerInfo()

void ROOT::Experimental::Internal::RNTupleFileWriter::WriteTFileStreamerInfo ( )
private

Write the compressed streamer info record with the description of the RNTuple class.

Definition at line 1447 of file RMiniFile.cxx.

Member Data Documentation

◆ fFileName

std::string ROOT::Experimental::Internal::RNTupleFileWriter::fFileName
private

The file name without parent directory; only required when writing with a C file stream.

Definition at line 144 of file RMiniFile.hxx.

◆ fFileProper

RFileProper ROOT::Experimental::Internal::RNTupleFileWriter::fFileProper
private

For updating existing files and for storing more than just an RNTuple in the file.

Definition at line 135 of file RMiniFile.hxx.

◆ fFileSimple

RFileSimple ROOT::Experimental::Internal::RNTupleFileWriter::fFileSimple
private

For simple use cases, survives without libRIO dependency.

Definition at line 137 of file RMiniFile.hxx.

◆ fIsBare

bool ROOT::Experimental::Internal::RNTupleFileWriter::fIsBare = false
private

A simple file can either be written as TFile container or as NTuple bare file.

Definition at line 139 of file RMiniFile.hxx.

◆ fNTupleAnchor

RNTuple ROOT::Experimental::Internal::RNTupleFileWriter::fNTupleAnchor
private

Header and footer location of the ntuple, written on Commit()

Definition at line 146 of file RMiniFile.hxx.

◆ fNTupleName

std::string ROOT::Experimental::Internal::RNTupleFileWriter::fNTupleName
private

The identifier of the RNTuple; A single writer object can only write a single RNTuple but multiple writers can operate on the same file if (and only if) they use a proper TFile object for writing.

Definition at line 142 of file RMiniFile.hxx.

Libraries for ROOT::Experimental::Internal::RNTupleFileWriter:

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