Seastar
High performance C++ framework for concurrent servers
|
Base class for layered file implementations.
A layered file implementation implements file_impl
virtual functions such as dma_read() by forwarding them to another, existing file called the underlying file. This base class simplifies construction of layered files by performing standard tasks such as setting up the file alignment. Actual implementation of the I/O methods is left for the derived class.
#include <seastar/core/layered_file.hh>
Public Member Functions | |
layered_file_impl (file underlying_file) noexcept | |
file & | underlying_file () noexcept |
The underlying file which can be used to back I/O methods. | |
const file & | underlying_file () const noexcept |
The underlying file which can be used to back I/O methods. | |
virtual future< size_t > | write_dma (uint64_t pos, const void *buffer, size_t len, io_intent *)=0 |
virtual future< size_t > | write_dma (uint64_t pos, std::vector< iovec > iov, io_intent *)=0 |
virtual future< size_t > | read_dma (uint64_t pos, void *buffer, size_t len, io_intent *)=0 |
virtual future< size_t > | read_dma (uint64_t pos, std::vector< iovec > iov, io_intent *)=0 |
virtual future< temporary_buffer< uint8_t > > | dma_read_bulk (uint64_t offset, size_t range_size, io_intent *)=0 |
virtual future | flush ()=0 |
virtual future< struct stat > | stat ()=0 |
virtual future | truncate (uint64_t length)=0 |
virtual future | discard (uint64_t offset, uint64_t length)=0 |
virtual future< int > | ioctl (uint64_t cmd, void *argp) noexcept |
virtual future< int > | ioctl_short (uint64_t cmd, void *argp) noexcept |
virtual future< int > | fcntl (int op, uintptr_t arg) noexcept |
virtual future< int > | fcntl_short (int op, uintptr_t arg) noexcept |
virtual future | allocate (uint64_t position, uint64_t length)=0 |
virtual future< uint64_t > | size ()=0 |
virtual future | close ()=0 |
virtual std::unique_ptr< file_handle_impl > | dup () |
virtual subscription< directory_entry > | list_directory (std::function< future<>(directory_entry de)> next)=0 |
virtual coroutine::experimental::generator< directory_entry > | experimental_list_directory () |
Static Protected Member Functions | |
static file_impl * | get_file_impl (file &f) |
Protected Attributes | |
file | _underlying_file |
unsigned | _memory_dma_alignment = 4096 |
unsigned | _disk_read_dma_alignment = 4096 |
unsigned | _disk_write_dma_alignment = 4096 |
unsigned | _disk_overwrite_dma_alignment = 4096 |
unsigned | _read_max_length = 1u << 30 |
unsigned | _write_max_length = 1u << 30 |
|
inlineexplicitnoexcept |
Constructs a layered file. This sets up the underlying_file() method and initializes alignment constants to be the same as the underlying file.