19 :
public nuraft::state_machine,
23 nuraft::ptr<nuraft::buffer>> {
34 state_machine(
const std::pair<uint8_t, uint8_t>& output_range,
35 std::shared_ptr<logging::log> logger,
36 size_t completed_txs_cache_size,
37 const std::string& preseed_file,
46 auto commit(uint64_t log_idx, nuraft::buffer& data)
47 -> nuraft::ptr<nuraft::buffer>
override;
52 nuraft::ulong log_idx,
53 nuraft::ptr<nuraft::cluster_config>& )
override;
61 auto last_snapshot() -> nuraft::ptr<nuraft::snapshot>
override;
70 nuraft::async_result<bool>::handler_type& )
77 -> std::shared_ptr<cbdc::locking_shard::locking_shard>;
83 std::atomic<uint64_t> m_last_committed_idx{0};
84 nuraft::ptr<nuraft::snapshot> m_snapshot{};
85 std::shared_mutex m_snapshots_mut{};
87 nuraft::ptr<nuraft::snapshot> m_tmp_snapshot{};
88 std::mutex m_tmp_mut{};
90 std::shared_ptr<cbdc::locking_shard::locking_shard> m_shard{};
91 std::pair<uint8_t, uint8_t> m_output_range{};
92 std::string m_snapshot_dir{};
93 std::string m_db_dir{};
95 std::shared_ptr<logging::log> m_logger;