From 3cb85ac594f115db99f96b0a0f4bfdcd69ef0590 Mon Sep 17 00:00:00 2001 From: Russell Yanofsky Date: Tue, 21 Jan 2020 15:55:19 -0500 Subject: wallet refactor: Avoid use of Chain::Lock in CWallet::RescanFromTime This is a step toward removing the Chain::Lock class and reducing cs_main locking. This change has no effect on behavior. --- src/interfaces/chain.cpp | 5 +++++ src/interfaces/chain.h | 6 ++++++ 2 files changed, 11 insertions(+) (limited to 'src/interfaces') diff --git a/src/interfaces/chain.cpp b/src/interfaces/chain.cpp index 8cd4ab0b6d..0d69c33be0 100644 --- a/src/interfaces/chain.cpp +++ b/src/interfaces/chain.cpp @@ -260,6 +260,11 @@ public: WAIT_LOCK(cs_main, lock); return FillBlock(LookupBlockIndex(hash), block, lock); } + bool findFirstBlockWithTimeAndHeight(int64_t min_time, int min_height, const FoundBlock& block) override + { + WAIT_LOCK(cs_main, lock); + return FillBlock(ChainActive().FindEarliestAtLeast(min_time, min_height), block, lock); + } bool findAncestorByHeight(const uint256& block_hash, int ancestor_height, const FoundBlock& ancestor_out) override { WAIT_LOCK(cs_main, lock); diff --git a/src/interfaces/chain.h b/src/interfaces/chain.h index ee79b3e6dc..16753b7cc1 100644 --- a/src/interfaces/chain.h +++ b/src/interfaces/chain.h @@ -146,6 +146,12 @@ public: //! or contents. virtual bool findBlock(const uint256& hash, const FoundBlock& block={}) = 0; + //! Find first block in the chain with timestamp >= the given time + //! and height >= than the given height, return false if there is no block + //! with a high enough timestamp and height. Optionally return block + //! information. + virtual bool findFirstBlockWithTimeAndHeight(int64_t min_time, int min_height, const FoundBlock& block={}) = 0; + //! Find ancestor of block at specified height and optionally return //! ancestor information. virtual bool findAncestorByHeight(const uint256& block_hash, int ancestor_height, const FoundBlock& ancestor_out={}) = 0; -- cgit v1.2.3