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 |
| int | GetFeatures () const final |
| Derived classes shall inform the user about the supported functionality, which can possibly depend on the file at hand. | |
Public Member Functions inherited from ROOT::Internal::RRawFile | |
| RRawFile (const RRawFile &)=delete | |
| RRawFile (std::string_view url, ROptions options) | |
| virtual | ~RRawFile () |
| std::uint64_t | GetFilePos () const |
| Returns the offset for the next Read/Readln call. | |
| std::uint64_t | GetSize () |
| Returns the size of the file. | |
| std::string | GetUrl () const |
| Returns the url of the file. | |
| void * | Map (size_t nbytes, std::uint64_t offset, std::uint64_t &mapdOffset) |
| Memory mapping according to POSIX standard; in particular, new mappings of the same range replace older ones. | |
| 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 | Unmap (void *region, size_t nbytes) |
| Receives a pointer returned by Map() and should have nbytes set to the full length of the mapping. | |
Protected Member Functions | |
| std::uint64_t | GetSizeImpl () final |
| Derived classes should return the file size or kUnknownFileSize. | |
| void * | MapImpl (size_t nbytes, std::uint64_t offset, std::uint64_t &mapdOffset) final |
| If a derived class supports mmap, the MapImpl and UnmapImpl calls are supposed to be implemented, too The default implementation throws an error. | |
| 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 | UnmapImpl (void *region, size_t nbytes) final |
| Derived classes with mmap support must be able to unmap the memory area handed out by Map() | |
Private Attributes | |
| int | fFileDes |
Additional Inherited Members | |
Public Types inherited from ROOT::Internal::RRawFile | |
| enum class | ELineBreaks { kAuto , kSystem , kUnix , kWindows } |
| kAuto detects the line break from the first line, kSystem picks the system's default More... | |
Static Public Member Functions inherited from ROOT::Internal::RRawFile | |
| 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. | |
Static Public Attributes inherited from ROOT::Internal::RRawFile | |
| static constexpr int | kFeatureHasAsyncIo = 0x04 |
| File supports async IO. | |
| static constexpr int | kFeatureHasMmap = 0x02 |
| Map() and Unmap() are implemented. | |
| static constexpr int | kFeatureHasSize = 0x01 |
| GetSize() does not return kUnknownFileSize. | |
| static constexpr std::uint64_t | kUnknownFileSize = std::uint64_t(-1) |
| Derived classes do not necessarily need to provide file size information but they can return "not known" instead. | |
Protected Attributes inherited from ROOT::Internal::RRawFile | |
| std::uint64_t | fFilePos |
| 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 38 of file RRawFileUnix.cxx.
|
override |
Definition at line 43 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 49 of file RRawFileUnix.cxx.
|
inline |
Definition at line 48 of file RRawFileUnix.hxx.
|
finalvirtual |
Derived classes shall inform the user about the supported functionality, which can possibly depend on the file at hand.
Implements ROOT::Internal::RRawFile.
Definition at line 54 of file RRawFileUnix.cxx.
|
finalprotectedvirtual |
Derived classes should return the file size or kUnknownFileSize.
Implements ROOT::Internal::RRawFile.
Definition at line 58 of file RRawFileUnix.cxx.
|
finalprotectedvirtual |
If a derived class supports mmap, the MapImpl and UnmapImpl calls are supposed to be implemented, too The default implementation throws an error.
Reimplemented from ROOT::Internal::RRawFile.
Definition at line 72 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 84 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 149 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 115 of file RRawFileUnix.cxx.
|
finalprotectedvirtual |
Derived classes with mmap support must be able to unmap the memory area handed out by Map()
Reimplemented from ROOT::Internal::RRawFile.
Definition at line 174 of file RRawFileUnix.cxx.
|
private |
Definition at line 33 of file RRawFileUnix.hxx.