diff --git a/include/bitcoin/database/impl/query/optional.ipp b/include/bitcoin/database/impl/query/optional.ipp index d4a5fc198..75dfef0ee 100644 --- a/include/bitcoin/database/impl/query/optional.ipp +++ b/include/bitcoin/database/impl/query/optional.ipp @@ -243,6 +243,19 @@ bool CLASS::get_filter_hashes(hashes& filter_hashes, return get_filter_head(previous_header, link); } +TEMPLATE +bool CLASS::get_filter_heads(hashes& filter_heads, + size_t stop_height, size_t interval) const NOEXCEPT +{ + size_t height{}; + filter_heads.resize(system::floored_divide(stop_height, interval)); + for (auto& head: filter_heads) + if (!get_filter_head(head, to_confirmed((height += interval)))) + return false; + + return true; +} + // set_filter_body // ---------------------------------------------------------------------------- diff --git a/include/bitcoin/database/query.hpp b/include/bitcoin/database/query.hpp index 08c252735..f1cfe2d90 100644 --- a/include/bitcoin/database/query.hpp +++ b/include/bitcoin/database/query.hpp @@ -569,14 +569,17 @@ class query bool is_filtered_body(const header_link& link) const NOEXCEPT; bool get_filter_body(filter& out, const header_link& link) const NOEXCEPT; - bool set_filter_body(const header_link& link, const block& block) NOEXCEPT; - bool set_filter_body(const header_link& link, const filter& body) NOEXCEPT; bool is_filtered_head(const header_link& link) const NOEXCEPT; bool get_filter_head(hash_digest& out, const header_link& link) const NOEXCEPT; bool get_filter_hash(hash_digest& out, const header_link& link) const NOEXCEPT; bool get_filter_hashes(hashes& filter_hashes, hash_digest& previous_header, const header_link& stop_link, size_t count) const NOEXCEPT; + bool get_filter_heads(hashes& filter_heads, size_t stop_height, + size_t interval) const NOEXCEPT; + + bool set_filter_body(const header_link& link, const block& block) NOEXCEPT; + bool set_filter_body(const header_link& link, const filter& body) NOEXCEPT; bool set_filter_head(const header_link& link) NOEXCEPT; bool set_filter_head(const header_link& link, const hash_digest& head, const hash_digest& hash) NOEXCEPT;