Tkrzw
|
File implementation by memory mapping and locking for parallel operations. More...
#include <tkrzw_file_mmap.h>
Classes | |
class | Zone |
Structure to make a shared section where a region can be accessed. More... | |
Public Member Functions | |
MemoryMapParallelFile () | |
Default constructor. More... | |
virtual | ~MemoryMapParallelFile () |
Destructor. More... | |
MemoryMapParallelFile (const MemoryMapParallelFile &rhs)=delete | |
Copy and assignment are disabled. More... | |
MemoryMapParallelFile & | operator= (const MemoryMapParallelFile &rhs)=delete |
Status | Open (const std::string &path, bool writable, int32_t options=OPEN_DEFAULT) override |
Opens a file. More... | |
Status | Close () override |
Closes the file. More... | |
Status | MakeZone (bool writable, int64_t off, size_t size, std::unique_ptr< Zone > *zone) |
Makes an accessible zone. More... | |
Status | Read (int64_t off, void *buf, size_t size) override |
Reads data. More... | |
std::string | ReadSimple (int64_t off, size_t size) override |
Reads data, in a simple way. More... | |
Status | Write (int64_t off, const void *buf, size_t size) override |
Writes data. More... | |
Status | Append (const void *buf, size_t size, int64_t *off=nullptr) override |
Appends data at the end of the file. More... | |
Status | Expand (size_t inc_size, int64_t *old_size=nullptr) override |
Expands the file size without writing data. More... | |
Status | Truncate (int64_t size) override |
Truncates the file. More... | |
Status | TruncateFakely (int64_t size) override |
Truncate the file fakely. More... | |
Status | Synchronize (bool hard) override |
Synchronizes the content of the file to the file system. More... | |
Status | GetSize (int64_t *size) override |
Gets the size of the file. More... | |
Status | SetAllocationStrategy (int64_t init_size, double inc_factor) override |
Sets allocation strategy. More... | |
Status | CopyProperties (File *file) override |
Copies internal properties to another file object. More... | |
Status | LockMemory (size_t size) override |
Locks the memory of the beginning region of the file, not to be swapped out. More... | |
Status | GetPath (std::string *path) override |
Gets the path of the file. More... | |
Status | Rename (const std::string &new_path) override |
Renames the file. More... | |
Status | DisablePathOperations () override |
Disables operations related to the path. More... | |
bool | IsMemoryMapping () const override |
Checks whether operations are done by memory mapping. More... | |
bool | IsAtomic () const override |
Checks whether updating operations are atomic and thread-safe. More... | |
std::unique_ptr< File > | MakeFile () const override |
Makes a new file object of the same concrete class. More... | |
![]() | |
virtual | ~MemoryMapFile ()=default |
Destructor. More... | |
![]() | |
virtual | ~File ()=default |
Destructor. More... | |
virtual bool | WriteSimple (int64_t off, std::string_view data) |
Writes data, in a simple way. More... | |
virtual int64_t | AppendSimple (const std::string &data) |
Appends data at the end of the file, in a simple way. More... | |
virtual int64_t | ExpandSimple (size_t inc_size) |
Expands the file size without writing data, in a simple way. More... | |
virtual int64_t | GetSizeSimple () |
Gets the size of the file, in a simple way. More... | |
virtual std::string | GetPathSimple () |
Gets the path of the file, in a simple way. More... | |
Additional Inherited Members | |
![]() | |
enum | OpenOption : int32_t { OPEN_DEFAULT = 0, OPEN_TRUNCATE = 1 << 0, OPEN_NO_CREATE = 1 << 1, OPEN_NO_WAIT = 1 << 2, OPEN_NO_LOCK = 1 << 3 } |
Enumeration of options for Open. More... | |
![]() | |
static constexpr int64_t | DEFAULT_ALLOC_INIT_SIZE = 1LL << 20 |
The default value of the initial allocation size. More... | |
static constexpr double | DEFAULT_ALLOC_INC_FACTOR = 2.0 |
The default value of the allocation increment factor. More... | |
File implementation by memory mapping and locking for parallel operations.
Reading and writing operations are thread-safe; Multiple threads can access the same file concurrently. Other operations including Open, Close, Truncate, and Synchronize are not thread-safe. Moreover, locking doesn't assure atomicity of reading and writing operations.
tkrzw::MemoryMapParallelFile::MemoryMapParallelFile | ( | ) |
Default constructor.
|
virtual |
Destructor.
|
explicitdelete |
Copy and assignment are disabled.
|
overridevirtual |
Opens a file.
path | A path of the file. |
writable | If true, the file is writable. If false, it is read-only. |
options | Bit-sum options of File::OpenOption enums. |
Implements tkrzw::File.
|
overridevirtual |
Status tkrzw::MemoryMapParallelFile::MakeZone | ( | bool | writable, |
int64_t | off, | ||
size_t | size, | ||
std::unique_ptr< Zone > * | zone | ||
) |
Makes an accessible zone.
writable | If true, the region is for reading and writing. If false, the region is only for reading. |
off | The offset of the region to access. |
size | The size of the region to access. |
zone | A unique pointer to own the writable zone. |
|
overridevirtual |
Reads data.
off | The offset of a source region. |
buf | The pointer to the destination buffer. |
size | The size of the data to be read. |
Implements tkrzw::File.
|
overridevirtual |
Reads data, in a simple way.
off | The offset of a source region. |
size | The size of the data to be read. |
Reimplemented from tkrzw::File.
|
overridevirtual |
Writes data.
off | The offset of the destination region. |
buf | The pointer to the source buffer. |
size | The size of the data to be written. |
Implements tkrzw::File.
|
overridevirtual |
Appends data at the end of the file.
buf | The pointer to the source buffer. |
size | The size of the data to be written. |
off | The pointer to an integer object to contain the offset at which the data has been put. If it is nullptr, it is ignored. |
Implements tkrzw::File.
|
overridevirtual |
Expands the file size without writing data.
inc_size | The size to increment the file size by. |
old_size | The pointer to an integer object to contain the old size of the file. put. If it is nullptr, it is ignored. |
Implements tkrzw::File.
|
overridevirtual |
Truncates the file.
size | The new size of the file. |
Implements tkrzw::File.
|
overridevirtual |
Truncate the file fakely.
size | The new size of the file. |
Implements tkrzw::File.
|
overridevirtual |
Synchronizes the content of the file to the file system.
hard | True to do physical synchronization with the hardware or false to do only logical synchronization with the file system. |
Implements tkrzw::File.
|
overridevirtual |
Gets the size of the file.
size | The pointer to an integer object to contain the result size. |
Implements tkrzw::File.
|
overridevirtual |
Sets allocation strategy.
init_size | An initial size of allocation. |
inc_factor | A factor to increase the size of allocation. |
Implements tkrzw::File.
Copies internal properties to another file object.
file | The other file object. |
Implements tkrzw::File.
|
overridevirtual |
Locks the memory of the beginning region of the file, not to be swapped out.
size | The size of the beginning region to lock. |
Implements tkrzw::MemoryMapFile.
|
overridevirtual |
Gets the path of the file.
path | The pointer to a string object to store the path. |
Implements tkrzw::File.
|
overridevirtual |
Renames the file.
new_path | A new path of the file. |
Implements tkrzw::File.
|
overridevirtual |
Disables operations related to the path.
Implements tkrzw::File.
|
overridevirtual |
Checks whether operations are done by memory mapping.
Implements tkrzw::File.
|
overridevirtual |
Checks whether updating operations are atomic and thread-safe.
Implements tkrzw::File.
|
overridevirtual |
Makes a new file object of the same concrete class.
Implements tkrzw::File.