Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Writable_Database_Client.h
Go to the documentation of this file.
1#ifndef joedb_Writable_Database_Client_declared
2#define joedb_Writable_Database_Client_declared
3
6#include "joedb/Multiplexer.h"
7
8namespace joedb
9{
10 namespace detail
11 {
12 class Writable_Database_Client_Data
13 {
14 protected:
15 Writable_Journal journal;
16 Database database;
17 Multiplexer multiplexer;
18
19 public:
20 Writable_Database_Client_Data(Buffered_File &file):
21 journal(file),
22 multiplexer{journal, database}
23 {
24 }
25 };
26 };
27
28 /// @ingroup concurrency
30 protected detail::Writable_Database_Client_Data,
31 public Client
32 {
34
35 protected:
36 void read_journal() override {journal.play_until_checkpoint(database);}
37
38 public:
40 (
41 Buffered_File &file,
42 Connection &connection,
43 bool content_check = true
44 ):
45 Writable_Database_Client_Data(file),
46 Client(journal, connection, content_check)
47 {
49 }
50
51 const Database &get_database() const
52 {
53 return database;
54 }
55
56 template<typename F> void transaction(F transaction)
57 {
59 {
60 transaction(database, multiplexer);
61 });
62 }
63 };
64
65 /// @ingroup concurrency
67 {
68 public:
73
74 const Readable &get_readable() const
75 {
76 return static_cast<Writable_Database_Client &>(client).database;
77 }
78
80 {
82 return static_cast<Writable_Database_Client &>(client).multiplexer;
83 }
84 };
85}
86
87#endif
Lock object that allows writing to a database managed by a joedb::Client.
Definition Client.h:161
bool is_locked() const
Definition Client.h:168
Client & client
Definition Client.h:166
Handle concurrent access to a file with a joedb::Connection.
Definition Client.h:12
void transaction(F transaction)
Definition Client.h:18
Writable_Database_Client_Lock(Writable_Database_Client &client)
Writable_Database_Client(Buffered_File &file, Connection &connection, bool content_check=true)
#define JOEDB_ASSERT(x)
Definition assert.h:18
Definition Blob.h:7