Joedb 9.5.0
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Readonly_Client.h
Go to the documentation of this file.
1#ifndef joedb_Readonly_Client_declared
2#define joedb_Readonly_Client_declared
3
5
6namespace joedb
7{
8 /// Specialized client for read-only files
9 ///
10 /// This Client has no support for transactions: the connection is locked
11 /// in the constructor and unlocked in the destructor. Only allowed
12 /// operations are pulling from the journal, and pushing to the connection.
13 ///
14 /// @ingroup concurrency
15 class Readonly_Client: public Client
16 {
17 public:
29
30 int64_t pull
31 (
32 std::chrono::milliseconds wait = std::chrono::milliseconds(0)
33 ) override
34 {
35 const int64_t result = journal.pull();
36 if (result)
38 return result;
39 }
40
41 int64_t push_if_ahead() override
42 {
43 pull();
46 else
48 }
49
51 {
52 try {connection.unlock();} catch (...) {}
53 }
54 };
55}
56
57#endif
Handle concurrent access to a file with a joedb::Connection.
Definition Client.h:12
virtual void read_journal()
Definition Client.h:14
int64_t push(Unlock_Action unlock_action)
Definition Client.h:19
int64_t get_journal_checkpoint() const
Definition Client.h:62
Readonly_Journal & journal
Definition Client.h:15
Connection & connection
Definition Client.h:16
int64_t get_connection_checkpoint() const
Definition Client.h:72
virtual void unlock()
Unlock the connection.
Specialized client for read-only files.
int64_t pull(std::chrono::milliseconds wait=std::chrono::milliseconds(0)) override
Readonly_Client(Readonly_Journal &journal, Connection &connection, Content_Check content_check=Content_Check::quick)
int64_t push_if_ahead() override
Content_Check
Definition Connection.h:19
Definition Blob.h:7