The RRawFileWin class uses portable C I/O calls to read from a drive.
The standard C I/O buffering is turned off for the buffering of RRawFile base class.
Definition at line 32 of file RRawFileWin.hxx.
Public Member Functions | |
RRawFileWin (std::string_view url, RRawFile::ROptions options) | |
~RRawFileWin () override | |
std::unique_ptr< RRawFile > | Clone () const final |
Create a new RawFile that accesses the same resource. The file pointer is reset to zero. | |
![]() | |
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 | EnsureOpen () |
Open the file if not already open. Otherwise noop. | |
virtual void | ReadVImpl (RIOVec *ioVec, unsigned int nReq) |
By default implemented as a loop of ReadAt calls but can be overwritten, e.g. XRootD or DAVIX implementations. | |
Private Member Functions | |
void | Seek (long offset, int whence) |
Private Attributes | |
FILE * | fFilePtr = nullptr |
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/RRawFileWin.hxx>
ROOT::Internal::RRawFileWin::RRawFileWin | ( | std::string_view | url, |
RRawFile::ROptions | options | ||
) |
Definition at line 29 of file RRawFileWin.cxx.
|
override |
Definition at line 31 of file RRawFileWin.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 37 of file RRawFileWin.cxx.
|
finalprotectedvirtual |
Derived classes should return the file size.
Implements ROOT::Internal::RRawFile.
Definition at line 42 of file RRawFileWin.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 53 of file RRawFileWin.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 65 of file RRawFileWin.cxx.
|
private |
Definition at line 76 of file RRawFileWin.cxx.
|
private |
Definition at line 34 of file RRawFileWin.hxx.