Joedb 10.2.1
The Journal-Only Embedded Database
|
This class allows accessing a file in joedbi text format. More...
#include <joedb/journal/Interpreted_File.h>
Public Member Functions | |
Abstract_Interpreted_File (Abstract_File &file) | |
int64_t | get_size () const override |
Get the size of the file, or -1 if it is unknown. | |
size_t | pread (char *data, size_t size, int64_t offset) const override |
Read a range of bytes. | |
void | pwrite (const char *buffer, size_t size, int64_t offset) override |
Write a range of bytes. Extend file size if necessary. | |
void | sync () override |
Write data durably (including file-size change) | |
void | shared_lock (int64_t start, int64_t size) override |
Lock a range of bytes for reading (prevents writes, not reads) | |
void | exclusive_lock (int64_t start, int64_t size) override |
Lock a range of bytes for writing (prevents both writes and reads) | |
void | unlock (int64_t start, int64_t size) noexcept override |
Remove a lock. The range should match the range of a corresponding lock. | |
![]() | |
Abstract_File (Open_Mode mode) | |
bool | is_shared () const noexcept |
bool | is_readonly () const noexcept |
Open_Mode | get_mode () const noexcept |
virtual void | datasync () |
Write data durably (no file-size change) | |
void | exclusive_lock_tail () |
void | unlock_tail () noexcept |
bool | tail_is_locked () const noexcept |
void | shared_lock_head () |
void | exclusive_lock_head () |
void | unlock_head () noexcept |
std::string | read_blob (Blob blob) const |
virtual void | copy_to (Abstract_File &destination, int64_t start, int64_t size) const |
virtual bool | equal_to (const Abstract_File &destination, int64_t from, int64_t until) const |
void | copy_to (Abstract_File &destination) const |
virtual | ~Abstract_File ()=default |
Additional Inherited Members | |
![]() | |
static void | reading_past_end_of_file () |
![]() | |
void | make_readonly () |
void | make_writable () |
![]() | |
static constexpr int64_t | last_position = (1ULL << 63) - 1 |
It works by keeping a binary version of the file in memory, and keeping it in sync with the text file. An empty new line is written at each checkpoint. Opening the text file fails if it does not end with an empty new line.
Definition at line 24 of file Interpreted_File.h.
joedb::Abstract_Interpreted_File::Abstract_Interpreted_File | ( | Abstract_File & | file | ) |
Definition at line 25 of file Interpreted_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 98 of file Interpreted_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 45 of file Interpreted_File.cpp.
|
overridevirtual |
The returned value may be less than size, even if the end of the file is not reached. 0 is returned if the end of the file is reached.
Reimplemented from joedb::Abstract_File.
Definition at line 52 of file Interpreted_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 64 of file Interpreted_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 90 of file Interpreted_File.cpp.
|
overridevirtual |
Reimplemented from joedb::Abstract_File.
Definition at line 83 of file Interpreted_File.cpp.
|
overridevirtualnoexcept |
Reimplemented from joedb::Abstract_File.
Definition at line 106 of file Interpreted_File.cpp.