Tkrzw
|
Interface of file operations. More...
#include <tkrzw_file.h>
Public Types | |
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 , OPEN_SYNC_HARD = 1 << 4 } |
Enumeration of options for Open. More... | |
Public Member Functions | |
virtual | ~File ()=default |
Destructor. More... | |
virtual Status | Open (const std::string &path, bool writable, int32_t options=OPEN_DEFAULT)=0 |
Opens a file. More... | |
virtual Status | Close ()=0 |
Closes the file. More... | |
virtual Status | Read (int64_t off, void *buf, size_t size)=0 |
Reads data. More... | |
virtual std::string | ReadSimple (int64_t off, size_t size) |
Reads data, in a simple way. More... | |
virtual Status | Write (int64_t off, const void *buf, size_t size)=0 |
Writes data. More... | |
virtual bool | WriteSimple (int64_t off, std::string_view data) |
Writes data, in a simple way. More... | |
virtual Status | Append (const void *buf, size_t size, int64_t *off=nullptr)=0 |
Appends data at the end of the file. More... | |
virtual int64_t | AppendSimple (const std::string &data) |
Appends data at the end of the file, in a simple way. More... | |
virtual Status | Expand (size_t inc_size, int64_t *old_size=nullptr)=0 |
Expands the file size without writing data. More... | |
virtual int64_t | ExpandSimple (size_t inc_size) |
Expands the file size without writing data, in a simple way. More... | |
virtual Status | Truncate (int64_t size)=0 |
Truncates the file. More... | |
virtual Status | TruncateFakely (int64_t size)=0 |
Truncate the file fakely. More... | |
virtual Status | Synchronize (bool hard, int64_t off=0, int64_t size=0)=0 |
Synchronizes the content of the file to the file system. More... | |
virtual Status | GetSize (int64_t *size)=0 |
Gets the size of the file. More... | |
virtual int64_t | GetSizeSimple () |
Gets the size of the file, in a simple way. More... | |
virtual Status | SetAllocationStrategy (int64_t init_size, double inc_factor)=0 |
Sets allocation strategy. More... | |
virtual Status | CopyProperties (File *file)=0 |
Copies internal properties to another file object. More... | |
virtual Status | GetPath (std::string *path)=0 |
Gets the path of the file. More... | |
virtual std::string | GetPathSimple () |
Gets the path of the file, in a simple way. More... | |
virtual Status | Rename (const std::string &new_path)=0 |
Renames the file. More... | |
virtual Status | DisablePathOperations ()=0 |
Disables operations related to the path. More... | |
virtual bool | IsOpen () const =0 |
Checks whether the file is open. More... | |
virtual bool | IsMemoryMapping () const =0 |
Checks whether operations are done by memory mapping. More... | |
virtual bool | IsAtomic () const =0 |
Checks whether updating operations are atomic and thread-safe. More... | |
virtual std::unique_ptr< File > | MakeFile () const =0 |
Makes a new file object of the same concrete class. More... | |
const std::type_info & | GetType () const |
Gets the type information of the actual class. More... | |
Static Public Attributes | |
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... | |
Interface of file operations.
enum tkrzw::File::OpenOption : int32_t |
Enumeration of options for Open.
|
virtualdefault |
Destructor.
|
pure virtual |
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. |
By default, exclusive locking against other processes is done for a writer and shared locking against other processes is done for a reader.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Closes the file.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
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. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
virtual |
Reads data, in a simple way.
off | The offset of a source region. |
size | The size of the data to be read. |
Reimplemented in tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
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. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
virtual |
Writes data, in a simple way.
off | The offset of the destination region. |
data | The data to be written. |
|
pure virtual |
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. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
virtual |
Appends data at the end of the file, in a simple way.
data | The data to be written. |
|
pure virtual |
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. If it is nullptr, it is ignored. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
virtual |
Expands the file size without writing data, in a simple way.
inc_size | The size to increment the file size by. |
|
pure virtual |
Truncates the file.
size | The new size of the file. |
If the file is shrunk, data after the new file end is discarded. If the file is expanded, null codes are filled after the old file end.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Truncate the file fakely.
size | The new size of the file. |
This doesn't modify the actual file but modifies the internal length parameter, which affects behavior of Close, Synchronize, Append, Expand, and GetSize. If the specified size is more than the actual file size, the operation fails. size,
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
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. |
off | The offset of the region to be synchronized. |
size | The size of the region to be synchronized. If it is zero, the length to the end of file is specified. |
The pysical file size can be larger than the logical size in order to improve performance by reducing frequency of allocation. Thus, you should call this function before accessing the file with external tools.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Gets the size of the file.
size | The pointer to an integer object to contain the result size. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
virtual |
Gets the size of the file, in a simple way.
|
pure virtual |
Sets allocation strategy.
init_size | An initial size of allocation. |
inc_factor | A factor to increase the size of allocation. |
By default, the initial size is 1MB and the increasing factor is 2. This method must be called before the file is opened.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
Copies internal properties to another file object.
file | The other file object. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Gets the path of the file.
path | The pointer to a string object to store the path. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
virtual |
Gets the path of the file, in a simple way.
|
pure virtual |
Renames the file.
new_path | A new path of the file. |
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Disables operations related to the path.
This should be called if the file is overwritten by external operations.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Checks whether the file is open.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Checks whether operations are done by memory mapping.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Checks whether updating operations are atomic and thread-safe.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
|
pure virtual |
Makes a new file object of the same concrete class.
Implemented in tkrzw::StdFile, tkrzw::PositionalAtomicFile, tkrzw::PositionalParallelFile, tkrzw::PolyFile, tkrzw::MemoryMapAtomicFile, and tkrzw::MemoryMapParallelFile.
const std::type_info& tkrzw::File::GetType | ( | ) | const |
Gets the type information of the actual class.
|
staticconstexpr |
The default value of the initial allocation size.
|
staticconstexpr |
The default value of the allocation increment factor.