Joedb 10.3.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:
54
55 int64_t pull
56 (
57 Lock_Action lock_action,
58 Data_Transfer data_transfer,
59 Writable_Journal &client_journal,
60 std::chrono::milliseconds wait
61 ) override;
62
63 int64_t push
64 (
65 const Readonly_Journal &client_journal,
66 const int64_t from,
67 const int64_t until,
68 Unlock_Action unlock_action
69 ) override;
70
71 void unlock() override;
72
74 };
75
76 namespace detail
77 {
78 ///////////////////////////////////////////////////////////////////////////
79 class File_Connection_Data
80 ///////////////////////////////////////////////////////////////////////////
81 {
82 protected:
83 Writable_Journal server_journal;
84
85 public:
86 /////////////////////////////////////////////////////////////////////////
87 File_Connection_Data(Abstract_File &server_file):
88 /////////////////////////////////////////////////////////////////////////
89 server_journal(server_file)
90 {
91 }
92 };
93 }
94
95 /// @ingroup concurrency
97 public detail::File_Connection_Data,
99 {
100 public:
101 //////////////////////////////////////////////////////////////////////////
103 //////////////////////////////////////////////////////////////////////////
104 File_Connection_Data(server_file),
105 Journal_Connection(File_Connection_Data::server_journal)
106 {
107 }
108 };
109}
110
111#endif
File_Connection(Abstract_File &server_file)
void unlock() override
Unlock the connection.
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:28
Lock_Action
Definition Connection.h:35
Content_Check
Definition Connection.h:20
Unlock_Action
Definition Connection.h:42