Definition at line 114 of file RMiniFile.hxx.
|
| RFileSimple () |
|
| RFileSimple (const RFileSimple &other)=delete |
|
| RFileSimple (RFileSimple &&other)=delete |
|
| ~RFileSimple () |
|
void | AllocateBuffers (std::size_t bufferSize) |
|
void | Flush () |
|
| operator bool () const |
|
RFileSimple & | operator= (const RFileSimple &other)=delete |
|
RFileSimple & | operator= (RFileSimple &&other)=delete |
|
void | Write (const void *buffer, size_t nbytes, std::int64_t offset=-1) |
| Writes bytes in the open stream, either at fFilePos or at the given offset.
|
|
std::uint64_t | WriteKey (const void *buffer, std::size_t nbytes, std::size_t len, std::int64_t offset=-1, std::uint64_t directoryOffset=100, const std::string &className="", const std::string &objectName="", const std::string &title="") |
| Writes a TKey including the data record, given by buffer, into fFile; returns the file offset to the payload.
|
|
|
static constexpr int | kBlockAlign = 4096 |
| Direct I/O requires that all buffers and write lengths are aligned.
|
|
static constexpr std::size_t | kHeaderBlockSize = 4096 |
| During commit, WriteTFileKeysList() updates fNBytesKeys and fSeekKeys of the RTFFile located at fSeekFileRecord.
|
|
◆ RFileSimple() [1/3]
ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::RFileSimple |
( |
| ) |
|
|
default |
◆ RFileSimple() [2/3]
ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::RFileSimple |
( |
const RFileSimple & |
other | ) |
|
|
delete |
◆ RFileSimple() [3/3]
ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::RFileSimple |
( |
RFileSimple && |
other | ) |
|
|
delete |
◆ ~RFileSimple()
ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::~RFileSimple |
( |
| ) |
|
◆ AllocateBuffers()
void ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::AllocateBuffers |
( |
std::size_t |
bufferSize | ) |
|
◆ Flush()
void ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::Flush |
( |
| ) |
|
◆ operator bool()
ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::operator bool |
( |
| ) |
const |
|
inline |
◆ operator=() [1/2]
RFileSimple & ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::operator= |
( |
const RFileSimple & |
other | ) |
|
|
delete |
◆ operator=() [2/2]
◆ Write()
void ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::Write |
( |
const void * |
buffer, |
|
|
size_t |
nbytes, |
|
|
std::int64_t |
offset = -1 |
|
) |
| |
Writes bytes in the open stream, either at fFilePos or at the given offset.
Definition at line 927 of file RMiniFile.cxx.
◆ WriteKey()
std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::WriteKey |
( |
const void * |
buffer, |
|
|
std::size_t |
nbytes, |
|
|
std::size_t |
len, |
|
|
std::int64_t |
offset = -1 , |
|
|
std::uint64_t |
directoryOffset = 100 , |
|
|
const std::string & |
className = "" , |
|
|
const std::string & |
objectName = "" , |
|
|
const std::string & |
title = "" |
|
) |
| |
Writes a TKey including the data record, given by buffer, into fFile; returns the file offset to the payload.
The payload is already compressed
Definition at line 976 of file RMiniFile.cxx.
◆ fBlock
unsigned char* ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fBlock = nullptr |
◆ fBlockOffset
std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fBlockOffset = 0 |
◆ fBlockSize
std::size_t ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fBlockSize = 0 |
◆ fControlBlock
Keeps track of TFile control structures, which need to be updated on committing the data set.
Definition at line 139 of file RMiniFile.hxx.
◆ fDirectIO
bool ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fDirectIO = false |
Whether the C file stream has been opened with Direct I/O, introducing alignment requirements.
Definition at line 133 of file RMiniFile.hxx.
◆ fFile
FILE* ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fFile = nullptr |
For the simplest cases, a C file stream can be used for writing.
Definition at line 131 of file RMiniFile.hxx.
◆ fFilePos
std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fFilePos = 0 |
◆ fHeaderBlock
unsigned char* ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fHeaderBlock = nullptr |
◆ fKeyOffset
std::uint64_t ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::fKeyOffset = 0 |
Keeps track of the next key offset.
Definition at line 137 of file RMiniFile.hxx.
◆ kBlockAlign
constexpr int ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::kBlockAlign = 4096 |
|
staticconstexpr |
Direct I/O requires that all buffers and write lengths are aligned.
It seems 512 byte alignment is the minimum for Direct I/O to work, but further testing showed that it results in worse performance than 4kB.
Definition at line 117 of file RMiniFile.hxx.
◆ kHeaderBlockSize
constexpr std::size_t ROOT::Experimental::Internal::RNTupleFileWriter::RFileSimple::kHeaderBlockSize = 4096 |
|
staticconstexpr |
During commit, WriteTFileKeysList() updates fNBytesKeys and fSeekKeys of the RTFFile located at fSeekFileRecord.
Given that the TFile key starts at offset 100 and the file name, which is written twice, is shorter than 255 characters, we should need at most ~600 bytes. However, the header also needs to be aligned to kBlockAlign...
Definition at line 122 of file RMiniFile.hxx.
The documentation for this struct was generated from the following files: