|
Tkrzw
|
File implementation by memory mapping and locking for atomic operations. More...
#include <tkrzw_file_mmap.h>
Classes | |
| class | Zone |
| Structure to make a critical section where a region can be accessed. More... | |
Public Member Functions | |
| MemoryMapAtomicFile () | |
| Default constructor. More... | |
| virtual | ~MemoryMapAtomicFile () |
| Destructor. More... | |
| MemoryMapAtomicFile (const MemoryMapAtomicFile &rhs)=delete | |
| Copy and assignment are disabled. More... | |
| MemoryMapAtomicFile & | operator= (const MemoryMapAtomicFile &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... | |
Public Member Functions inherited from tkrzw::MemoryMapFile | |
| virtual | ~MemoryMapFile ()=default |
| Destructor. More... | |
Public Member Functions inherited from tkrzw::File | |
| 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 | |
Public Types inherited from tkrzw::File | |
| 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 Public Attributes inherited from tkrzw::File | |
| 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 atomic operations.
All operations are thread-safe; Multiple threads can access the same file concurrently. Also, locking assures that every operation is observed in an atomic manner.
| tkrzw::MemoryMapAtomicFile::MemoryMapAtomicFile | ( | ) |
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::MemoryMapAtomicFile::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.