13#define FMT_HEADER_ONLY
14#include <fmt/format.h>
34 auto chunk_before =
chunk_ends.lower_bound(up_to);
37 std::advance(chunk_before, -1);
41 return std::accumulate(
42 begin, end, 0, [](
size_t n,
const auto& p) {
return n + p.second; });
47 std::numeric_limits<uint32_t>::max();
56 throw std::logic_error(fmt::format(
57 "Error: Ledger chunk threshold ({}) must be between 1-{}",
88 std::advance(forced_it, -1);
91 const auto ender_it =
chunk_ends.lower_bound(f);
119 auto compactable_it =
chunk_ends.lower_bound(v);
122 std::advance(compactable_it, -1);
123 compactable_v = *compactable_it;
Definition app_interface.h:19
uint64_t Version
Definition version.h:8
Definition ledger_chunker_interface.h:13
Definition ledger_chunker.h:19
std::mutex chunker_lock
Definition ledger_chunker.h:27
void append_entry_size(size_t n) override
Definition ledger_chunker.h:63
void rolled_back_to(Version v) override
Definition ledger_chunker.h:102
LedgerChunker(size_t threshold=max_chunk_threshold_size, Version start_from=0)
Definition ledger_chunker.h:49
std::map< Version, size_t > transaction_sizes
Definition ledger_chunker.h:24
bool is_chunk_end_requested(Version v) override
Definition ledger_chunker.h:75
static constexpr size_t max_chunk_threshold_size
Definition ledger_chunker.h:46
size_t get_unchunked_size(Version up_to) const
Definition ledger_chunker.h:29
Version current_tx_version
Definition ledger_chunker.h:22
std::set< Version > chunk_ends
Definition ledger_chunker.h:25
std::set< Version > forced_chunk_versions
Definition ledger_chunker.h:26
void compacted_to(Version v) override
Definition ledger_chunker.h:114
const size_t chunk_threshold
Definition ledger_chunker.h:21
void force_end_of_chunk(Version v) override
Definition ledger_chunker.h:69
void produced_chunk_at(Version v) override
Definition ledger_chunker.h:140