Joedb 10.4.3
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Encoded_File.h
Go to the documentation of this file.
1#ifndef joedb_Encoded_File_declared
2#define joedb_Encoded_File_declared
3
7
8namespace joedb
9{
10 /// @ingroup journal
12 {
13 private:
15 Codec &codec;
16
17 static constexpr size_t write_buffer_capacity = 1 << 20;
18 static_assert(write_buffer_capacity <= max_buffer_size);
19 std::vector<char> write_buffer;
20 int64_t write_buffer_offset;
21 mutable size_t write_buffer_size;
22
23 void write_blob(std::string_view buffer, int64_t offset) const;
24 void flush_write_buffer() const;
25
26 public:
28 (
29 Codec &codec,
31 );
32
33 size_t pread(char *buffer, size_t size, int64_t offset) const override;
34 void pwrite(const char *buffer, size_t size, int64_t offset) override;
35 int64_t get_size() const override;
36 void sync() override;
37
39 };
40}
41
42#endif
void pwrite(const char *buffer, size_t size, int64_t offset) override
Write a range of bytes. Extend file size if necessary.
size_t pread(char *buffer, size_t size, int64_t offset) const override
Read a range of bytes.
int64_t get_size() const override
Get the size of the file, or -1 if it is unknown.
void sync() override
Write data durably (including file-size change)
static constexpr size_t max_buffer_size
A Database that contains a joedb::Writable_Journal and keeps them in sync.