16 const int64_t min = std::min
18 server_journal.get_checkpoint(),
19 client_journal.get_checkpoint()
35 if (!client_journal.equal_to(server_journal, min))
42 return server_journal.get_checkpoint();
52 std::chrono::milliseconds wait
55 if (
bool(lock_action))
56 throw Exception(
"Connected to a read-only journal: can't lock");
58 server_journal.pull();
60 if (
bool(data_transfer))
61 client_journal.pull_from(server_journal);
63 return server_journal.get_checkpoint();
76 throw Exception(
"Connected to a read-only journal: can't push");
86 std::chrono::milliseconds wait
89 if (
bool(lock_action))
90 get_journal().lock_pull();
94 if (
bool(data_transfer))
95 client_journal.pull_from(server_journal);
97 return server_journal.get_checkpoint();
110 if (!get_journal().is_locked())
111 get_journal().lock_pull();
113 if (from != server_journal.get_checkpoint())
115 get_journal().pull_from(client_journal, until);
117 if (
bool(unlock_action))
118 get_journal().unlock();
120 return server_journal.get_checkpoint();
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.
static SHA_256::Hash get_hash(const Readonly_Journal &journal, int64_t checkpoint)
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.
#define JOEDB_RELEASE_ASSERT(x)