19 std::optional<Writable_Journal_Client_Lock> client_lock;
27 boost::asio::steady_timer timer;
30 boost::asio::steady_timer lock_timeout_timer;
31 boost::asio::awaitable<void> lock();
33 void refresh_lock_timeout();
36 std::optional<joedb::Async_Writer> push_writer;
39 boost::asio::awaitable<void> handshake();
40 boost::asio::awaitable<void> check_hash();
41 boost::asio::awaitable<void> read();
42 boost::asio::awaitable<void> pull(
bool lock_before,
bool send_data);
45 void remove_from_queue(std::deque<Session *> &queue);
51 boost::asio::local::stream_protocol::socket &&
socket
54 boost::asio::awaitable<void> run()
override;
55 void cleanup()
override;
58 std::unique_ptr<joedb::asio::Server::Session> new_session
60 boost::asio::local::stream_protocol::socket &&socket
63 return std::make_unique<Session>(*
this, std::move(socket));
66 const std::chrono::milliseconds lock_timeout;
69 std::deque<Session *> lock_waiters;
70 std::deque<Session *> pull_waiters;
72 static const std::map<char, const char *> request_description;
82 std::chrono::milliseconds lock_timeout