1#ifndef joedb_Writable_Database_Client_declared
2#define joedb_Writable_Database_Client_declared
12 class Writable_Database_Client_Data
15 Writable_Journal data_journal;
17 Multiplexer multiplexer;
20 Writable_Database_Client_Data
23 Record_Id max_record_id,
26 data_journal(Journal_Construction_Lock(file, recovery)),
27 database(max_record_id),
28 multiplexer{database, data_journal}
36 protected detail::Writable_Database_Client_Data,
44 data_journal.play_until_checkpoint(database);
56 Writable_Database_Client_Data(file, max_record_id, recovery),
Client_Lock(Writable_Client &client)
static Connection dummy
Since this class has no internal state, this global variable can be used instead of creating an insta...
static const Record_Id null
Writable_Client(Writable_Journal &journal, Connection &connection=Connection::dummy, Content_Check content_check=Content_Check::fast)
Writable_Database_Client_Lock(Writable_Database_Client &client)
Writable & get_writable()
const Readable & get_readable() const
Writable_Database_Client(Abstract_File &file, Connection &connection=Connection::dummy, Content_Check content_check=Content_Check::fast, Record_Id max_record_id=Record_Id::null, Recovery recovery=Recovery::none)
auto transaction(F transaction)
void read_journal() override
const Database & get_database() const
friend class Writable_Database_Client_Lock
Superclass with all joedb journal event listeners as virtual functions.
#define JOEDB_DEBUG_ASSERT(x)
assertion tested in debug mode
@ none
default: fail if file size > checkpoint