Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
File_Connection.h
Go to the documentation of this file.
1#ifndef joedb_File_Connection_declared
2#define joedb_File_Connection_declared
3
5
6namespace joedb
7{
8 /// @ingroup concurrency
10 {
11 protected:
13
14 public:
19
20 int64_t handshake
21 (
22 Readonly_Journal &client_journal,
23 bool content_check
24 ) override;
25
26 int64_t pull
27 (
28 Writable_Journal &client_journal,
29 std::chrono::milliseconds
30 ) override;
31
32 int64_t get_checkpoint
33 (
34 Readonly_Journal &client_journal,
35 std::chrono::milliseconds
36 ) override;
37
38 int64_t lock_pull
39 (
40 Writable_Journal &client_journal,
41 std::chrono::milliseconds
42 ) override;
43
44 int64_t push_until
45 (
46 Readonly_Journal &client_journal,
47 const int64_t from_checkpoint,
48 const int64_t until_checkpoint,
49 bool unlock_after
50 ) override;
51 };
52
53 /// @ingroup concurrency
55 {
56 private:
57 Writable_Journal &get_journal()
58 {
59 return static_cast<Writable_Journal &>(server_journal);
60 }
61
62 public:
67
68 int64_t lock_pull
69 (
70 Writable_Journal &client_journal,
71 std::chrono::milliseconds
72 ) override;
73
74 int64_t push_until
75 (
76 Readonly_Journal &client_journal,
77 const int64_t from_checkpoint,
78 const int64_t until_checkpoint,
79 bool unlock_after
80 ) override;
81
82 void unlock() override;
83
85 };
86
87 namespace detail
88 {
89 ///////////////////////////////////////////////////////////////////////////
90 class File_Connection_Data
91 ///////////////////////////////////////////////////////////////////////////
92 {
93 protected:
94 Writable_Journal server_journal;
95
96 public:
97 /////////////////////////////////////////////////////////////////////////
98 File_Connection_Data
99 /////////////////////////////////////////////////////////////////////////
100 (
101 Buffered_File &server_file,
103 Commit_Level commit_level
104 ):
105 server_journal(server_file, check, commit_level)
106 {
107 }
108 };
109 }
110
111 /// @ingroup concurrency
113 public detail::File_Connection_Data,
114 public Journal_Connection
115 {
116 public:
117 //////////////////////////////////////////////////////////////////////////
119 //////////////////////////////////////////////////////////////////////////
120 (
121 Buffered_File &server_file,
124 ):
125 File_Connection_Data(server_file, check, commit_level),
126 Journal_Connection(File_Connection_Data::server_journal)
127 {
128 }
129 };
130}
131
132#endif
void unlock() override
Can be used to cancel a transaction without pushing.
Journal_Connection(Writable_Journal &server_journal)
int64_t lock_pull(Writable_Journal &client_journal, std::chrono::milliseconds) override
Fused lock_pull, executed at the start of a write transaction.
int64_t push_until(Readonly_Journal &client_journal, const int64_t from_checkpoint, const int64_t until_checkpoint, bool unlock_after) override
Push new data to the connection.
int64_t get_checkpoint(Readonly_Journal &client_journal, std::chrono::milliseconds) override
Get new connection checkpoint without pulling.
int64_t push_until(Readonly_Journal &client_journal, const int64_t from_checkpoint, const int64_t until_checkpoint, bool unlock_after) override
Push new data to the connection.
int64_t lock_pull(Writable_Journal &client_journal, std::chrono::milliseconds) override
Fused lock_pull, executed at the start of a write transaction.
int64_t pull(Writable_Journal &client_journal, std::chrono::milliseconds) override
Pull new data from the connection.
int64_t handshake(Readonly_Journal &client_journal, bool content_check) override
Called during Client construction.
Pullonly_Journal_Connection(Readonly_Journal &server_journal)
Definition Blob.h:7
Commit_Level
Definition Writable.h:13