diff options
author | Russell Yanofsky <russ@yanofsky.org> | 2020-01-21 15:55:19 -0500 |
---|---|---|
committer | Russell Yanofsky <russ@yanofsky.org> | 2020-03-31 08:36:02 -0500 |
commit | 3cb85ac594f115db99f96b0a0f4bfdcd69ef0590 (patch) | |
tree | b815246e12776e63a0bb1bca50cbc12728434eb6 /src/interfaces | |
parent | f7ba881bc669451a60fedac58a449794702a3e23 (diff) |
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.
Diffstat (limited to 'src/interfaces')
-rw-r--r-- | src/interfaces/chain.cpp | 5 | ||||
-rw-r--r-- | src/interfaces/chain.h | 6 |
2 files changed, 11 insertions, 0 deletions
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; |