Joedb 9.5.0
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 const Readonly_Journal &client_journal,
23 Content_Check content_check
24 ) override;
25
26 int64_t pull
27 (
28 Lock_Action lock_action,
29 Data_Transfer data_transfer,
30 Writable_Journal &client_journal,
31 std::chrono::milliseconds wait
32 ) override;
33
34 int64_t push
35 (
36 const Readonly_Journal &client_journal,
37 const int64_t from,
38 const int64_t until,
39 Unlock_Action unlock_action
40 ) override;
41 };
42
43 /// @ingroup concurrency
45 {
46 private:
47 Writable_Journal &get_journal()
48 {
49 return static_cast<Writable_Journal &>(server_journal);
50 }
51
52 public:
57
58 int64_t pull
59 (
60 Lock_Action lock_action,
61 Data_Transfer data_transfer,
62 Writable_Journal &client_journal,
63 std::chrono::milliseconds wait
64 ) override;
65
66 int64_t push
67 (
68 const Readonly_Journal &client_journal,
69 const int64_t from,
70 const int64_t until,
71 Unlock_Action unlock_action
72 ) override;
73
74 void unlock() override;
75
77 };
78
79 namespace detail
80 {
81 ///////////////////////////////////////////////////////////////////////////
82 class File_Connection_Data
83 ///////////////////////////////////////////////////////////////////////////
84 {
85 protected:
86 Writable_Journal server_journal;
87
88 public:
89 /////////////////////////////////////////////////////////////////////////
90 File_Connection_Data(Buffered_File &server_file):
91 /////////////////////////////////////////////////////////////////////////
92 server_journal(server_file)
93 {
94 }
95 };
96 }
97
98 /// @ingroup concurrency
100 public detail::File_Connection_Data,
101 public Journal_Connection
102 {
103 public:
104 //////////////////////////////////////////////////////////////////////////
106 //////////////////////////////////////////////////////////////////////////
107 File_Connection_Data(server_file),
108 Journal_Connection(File_Connection_Data::server_journal)
109 {
110 }
111 };
112}
113
114#endif
File_Connection(Buffered_File &server_file)
void unlock() override
Unlock the connection.
Journal_Connection(Writable_Journal &server_journal)
int64_t push(const Readonly_Journal &client_journal, const int64_t from, const int64_t until, Unlock_Action unlock_action) override
Push new data to the connection.
int64_t pull(Lock_Action lock_action, Data_Transfer data_transfer, Writable_Journal &client_journal, std::chrono::milliseconds wait) override
Pull from the connection.
int64_t pull(Lock_Action lock_action, Data_Transfer data_transfer, Writable_Journal &client_journal, std::chrono::milliseconds wait) override
Pull from the connection.
int64_t handshake(const Readonly_Journal &client_journal, Content_Check content_check) override
Called during Client construction.
int64_t push(const Readonly_Journal &client_journal, const int64_t from, const int64_t until, Unlock_Action unlock_action) override
Push new data to the connection.
Pullonly_Journal_Connection(Readonly_Journal &server_journal)
Data_Transfer
Definition Connection.h:27
Lock_Action
Definition Connection.h:34
Content_Check
Definition Connection.h:19
Unlock_Action
Definition Connection.h:41
Definition Blob.h:7