27 void Encoded_File::write_blob(
const char *buffer,
size_t size, int64_t offset)
const
30 const Blob blob = db.write_blob_data(codec.encode(buffer, size));
31 db.new_buffer(blob, int64_t(size), offset);
36 void Encoded_File::flush_write_buffer() const
39 if (write_buffer_size > 0)
41 write_blob(write_buffer.data(), write_buffer_size, write_buffer_offset);
42 write_buffer_size = 0;
50 if (size > write_buffer_total_size)
53 write_blob(buffer, size, offset);
61 write_buffer_offset +
int64_t(write_buffer_size) != offset ||
62 write_buffer_size + size > write_buffer_total_size
69 if (write_buffer_size == 0)
70 write_buffer_offset = offset;
72 std::copy_n(buffer, size, write_buffer.data() + write_buffer_size);
74 write_buffer_size += size;
88 db.get_journal().get_file(),
93 write_buffer(write_buffer_total_size),
94 write_buffer_offset(0),
105 write_buffer_offset +
int64_t(write_buffer_size),
116 flush_write_buffer();
void pwrite(const char *buffer, size_t size, int64_t offset) override
Encoded_File(Codec &codec, db::encoded_file::Writable_Database &db)
size_t pread(char *buffer, size_t size, int64_t offset) const override
int64_t get_size() const override
size_t pread(char *buffer, size_t size, int64_t offset) const override
int64_t get_size() const override
A writable Database constructed from a writable joedb::Buffered_File.
void checkpoint_full_commit()
@ write_existing_or_create_new
either write_existing or create_new depending on whether the file exists. Racy in Posix,...