Joedb 9.1.4
The Journal-Only Embedded Database
Loading...
Searching...
No Matches
Connection.h
Go to the documentation of this file.
1#ifndef joedb_Connection_declared
2#define joedb_Connection_declared
3
5
6#include <chrono>
7
8namespace joedb
9{
10 /// @ingroup concurrency
12 {
13 protected:
14 static void content_mismatch();
15
16 public:
17 /// Called during Client construction
18 /// @param client_journal may be used to check matching content
19 /// @param content_check indicates whether matching content is tested
20 /// @retval server_checkpoint
21 virtual int64_t handshake
22 (
23 Readonly_Journal &client_journal,
24 bool content_check
25 );
26
27 /// Pull new data from the connection
28 /// @param client_journal: journal to pull into
29 /// @param wait: duration during which the connection may wait
30 /// for new data if the pull would otherwise be empty
31 /// @retval server_checkpoint
32 virtual int64_t pull
33 (
34 Writable_Journal &client_journal,
35 std::chrono::milliseconds wait = std::chrono::milliseconds(0)
36 );
37
38 /// Fused lock_pull, executed at the start of a write transaction
39 /// @retval server_checkpoint
40 virtual int64_t lock_pull
41 (
42 Writable_Journal &client_journal,
43 std::chrono::milliseconds wait = std::chrono::milliseconds(0)
44 );
45
46 /// Get new connection checkpoint without pulling
47 /// @retval server_checkpoint
48 virtual int64_t get_checkpoint
49 (
50 Readonly_Journal &client_journal,
51 std::chrono::milliseconds wait = std::chrono::milliseconds(0)
52 );
53
54 /// Push new data to the connection
55 /// @retval server_checkpoint
56 virtual int64_t push_until
57 (
58 Readonly_Journal &client_journal,
59 int64_t from_checkpoint,
60 int64_t until_checkpoint,
61 bool unlock_after
62 );
63
64 /// Shortcut to call @ref push_until until the client checkpoint
65 /// @retval server_checkpoint
66 int64_t push
67 (
68 Readonly_Journal &client_journal,
69 int64_t from_checkpoint,
70 bool unlock_after
71 )
72 {
73 return push_until
74 (
75 client_journal,
76 from_checkpoint,
77 std::numeric_limits<int64_t>::max(),
78 unlock_after
79 );
80 }
81
82 /// Can be used to cancel a transaction without pushing.
83 virtual void unlock();
84
85 virtual ~Connection();
86 };
87}
88
89#endif
virtual int64_t pull(Writable_Journal &client_journal, std::chrono::milliseconds wait=std::chrono::milliseconds(0))
Pull new data from the connection.
int64_t push(Readonly_Journal &client_journal, int64_t from_checkpoint, bool unlock_after)
Shortcut to call push_until until the client checkpoint.
Definition Connection.h:67
virtual int64_t lock_pull(Writable_Journal &client_journal, std::chrono::milliseconds wait=std::chrono::milliseconds(0))
Fused lock_pull, executed at the start of a write transaction.
virtual int64_t handshake(Readonly_Journal &client_journal, bool content_check)
Called during Client construction.
virtual void unlock()
Can be used to cancel a transaction without pushing.
virtual int64_t push_until(Readonly_Journal &client_journal, int64_t from_checkpoint, int64_t until_checkpoint, bool unlock_after)
Push new data to the connection.
virtual ~Connection()
virtual int64_t get_checkpoint(Readonly_Journal &client_journal, std::chrono::milliseconds wait=std::chrono::milliseconds(0))
Get new connection checkpoint without pulling.
static void content_mismatch()
Definition Connection.cpp:5
Definition Blob.h:7