The RRawFileUnix class uses POSIX calls to read from a mounted file system.
Thus the path name can refer, for instance, to a named pipe instead of a regular file.
Definition at line 31 of file RRawFileUnix.hxx.
Public Member Functions | |
RRawFileUnix (std::string_view url, RRawFile::ROptions options) | |
~RRawFileUnix () override | |
std::unique_ptr< RRawFile > | Clone () const final |
Create a new RawFile that accesses the same resource. The file pointer is reset to zero. | |
int | GetFd () const |
![]() | |
RRawFile (const RRawFile &)=delete | |
RRawFile (std::string_view url, ROptions options) | |
virtual | ~RRawFile ()=default |
std::uint64_t | GetFilePos () const |
Returns the offset for the next Read/Readln call. | |
virtual RIOVecLimits | GetReadVLimits () |
Returns the limits regarding the ioVec input to ReadV for this specific file; may open the file as a side-effect. | |
std::uint64_t | GetSize () |
Returns the size of the file. | |
std::string | GetUrl () const |
Returns the url of the file. | |
bool | IsBuffering () const |
bool | IsOpen () const |
Once opened, the file stay open until destruction of the RRawFile object. | |
RRawFile & | operator= (const RRawFile &)=delete |
size_t | Read (void *buffer, size_t nbytes) |
Read from fFilePos offset. Returns the actual number of bytes read. | |
size_t | ReadAt (void *buffer, size_t nbytes, std::uint64_t offset) |
Buffered read from a random position. | |
bool | Readln (std::string &line) |
Read the next line starting from the current value of fFilePos. Returns false if the end of the file is reached. | |
void | ReadV (RIOVec *ioVec, unsigned int nReq) |
Opens the file if necessary and calls ReadVImpl. | |
void | Seek (std::uint64_t offset) |
Change the cursor fFilePos. | |
void | SetBuffering (bool value) |
Turn off buffered reads; all scalar read requests go directly to the implementation. | |
Protected Member Functions | |
std::uint64_t | GetSizeImpl () final |
Derived classes should return the file size. | |
void | OpenImpl () final |
OpenImpl() is called at most once and before any call to either DoReadAt or DoGetSize. | |
size_t | ReadAtImpl (void *buffer, size_t nbytes, std::uint64_t offset) final |
Derived classes should implement low-level reading without buffering. | |
void | ReadVImpl (RIOVec *ioVec, unsigned int nReq) final |
By default implemented as a loop of ReadAt calls but can be overwritten, e.g. XRootD or DAVIX implementations. | |
![]() | |
void | EnsureOpen () |
Open the file if not already open. Otherwise noop. | |
Private Attributes | |
int | fFileDes = -1 |
Additional Inherited Members | |
![]() | |
enum class | ELineBreaks { kAuto , kSystem , kUnix , kWindows } |
kAuto detects the line break from the first line, kSystem picks the system's default More... | |
![]() | |
static std::unique_ptr< RRawFile > | Create (std::string_view url, ROptions options=ROptions()) |
Factory method that returns a suitable concrete implementation according to the transport in the url. | |
static std::string | GetLocation (std::string_view url) |
Returns only the file location, e.g. "server/file" for http://server/file. | |
static std::string | GetTransport (std::string_view url) |
Returns only the transport protocol in lower case, e.g. "http" for HTTP://server/file. | |
![]() | |
std::uint64_t | fFilePos = 0 |
The current position in the file, which can be changed by Seek, Read, and Readln. | |
ROptions | fOptions |
std::string | fUrl |
#include <ROOT/RRawFileUnix.hxx>
ROOT::Internal::RRawFileUnix::RRawFileUnix | ( | std::string_view | url, |
RRawFile::ROptions | options | ||
) |
Definition at line 37 of file RRawFileUnix.cxx.
|
override |
Definition at line 39 of file RRawFileUnix.cxx.
|
finalvirtual |
Create a new RawFile that accesses the same resource. The file pointer is reset to zero.
Implements ROOT::Internal::RRawFile.
Definition at line 45 of file RRawFileUnix.cxx.
|
inline |
Definition at line 45 of file RRawFileUnix.hxx.
|
finalprotectedvirtual |
Derived classes should return the file size.
Implements ROOT::Internal::RRawFile.
Definition at line 50 of file RRawFileUnix.cxx.
|
finalprotectedvirtual |
OpenImpl() is called at most once and before any call to either DoReadAt or DoGetSize.
If fOptions.fBlocksize is negative, derived classes are responsible to set a sensible value. After a call to OpenImpl(), fOptions.fBlocksize must be larger or equal to zero.
Implements ROOT::Internal::RRawFile.
Definition at line 64 of file RRawFileUnix.cxx.
|
finalprotectedvirtual |
Derived classes should implement low-level reading without buffering.
Short reads indicate the end of the file, therefore derived classes should return nbytes bytes if available.
Implements ROOT::Internal::RRawFile.
Definition at line 129 of file RRawFileUnix.cxx.
|
finalprotectedvirtual |
By default implemented as a loop of ReadAt calls but can be overwritten, e.g. XRootD or DAVIX implementations.
Reimplemented from ROOT::Internal::RRawFile.
Definition at line 95 of file RRawFileUnix.cxx.
|
private |
Definition at line 33 of file RRawFileUnix.hxx.