aboutsummaryrefslogtreecommitdiff
path: root/src/validationinterface.h
diff options
context:
space:
mode:
authorJames O'Beirne <james.obeirne@gmail.com>2019-09-23 13:54:21 -0400
committerJames O'Beirne <james.obeirne@pm.me>2023-09-30 06:38:47 -0400
commit4d8f4dcb450d31e4847804e62bf91545b949fa14 (patch)
tree969db62e4210a1fdf9eeceeb39e4c2755cad051d /src/validationinterface.h
parent1e59acdf17309f567c370885f0cf02605e2baa58 (diff)
downloadbitcoin-4d8f4dcb450d31e4847804e62bf91545b949fa14.tar.xz
validation: pass ChainstateRole for validationinterface calls
This allows consumers to decide how to handle events from background or assumedvalid chainstates.
Diffstat (limited to 'src/validationinterface.h')
-rw-r--r--src/validationinterface.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/validationinterface.h b/src/validationinterface.h
index 5bdd7e0123..eb15aa4d5f 100644
--- a/src/validationinterface.h
+++ b/src/validationinterface.h
@@ -7,6 +7,7 @@
#define BITCOIN_VALIDATIONINTERFACE_H
#include <kernel/cs_main.h>
+#include <kernel/chain.h>
#include <primitives/transaction.h> // CTransaction(Ref)
#include <sync.h>
@@ -136,11 +137,12 @@ protected:
*
* Called on a background thread.
*/
- virtual void BlockConnected(const std::shared_ptr<const CBlock> &block, const CBlockIndex *pindex) {}
+ virtual void BlockConnected(ChainstateRole role, const std::shared_ptr<const CBlock> &block, const CBlockIndex *pindex) {}
/**
* Notifies listeners of a block being disconnected
*
- * Called on a background thread.
+ * Called on a background thread. Only called for the active chainstate, since
+ * background chainstates should never disconnect blocks.
*/
virtual void BlockDisconnected(const std::shared_ptr<const CBlock> &block, const CBlockIndex* pindex) {}
/**
@@ -159,17 +161,18 @@ protected:
*
* Called on a background thread.
*/
- virtual void ChainStateFlushed(const CBlockLocator &locator) {}
+ virtual void ChainStateFlushed(ChainstateRole role, const CBlockLocator &locator) {}
/**
* Notifies listeners of a block validation result.
* If the provided BlockValidationState IsValid, the provided block
* is guaranteed to be the current best block at the time the
- * callback was generated (not necessarily now)
+ * callback was generated (not necessarily now).
*/
virtual void BlockChecked(const CBlock&, const BlockValidationState&) {}
/**
* Notifies listeners that a block which builds directly on our current tip
- * has been received and connected to the headers tree, though not validated yet */
+ * has been received and connected to the headers tree, though not validated yet.
+ */
virtual void NewPoWValidBlock(const CBlockIndex *pindex, const std::shared_ptr<const CBlock>& block) {};
friend class CMainSignals;
friend class ValidationInterfaceTest;
@@ -199,9 +202,9 @@ public:
void UpdatedBlockTip(const CBlockIndex *, const CBlockIndex *, bool fInitialDownload);
void TransactionAddedToMempool(const CTransactionRef&, uint64_t mempool_sequence);
void TransactionRemovedFromMempool(const CTransactionRef&, MemPoolRemovalReason, uint64_t mempool_sequence);
- void BlockConnected(const std::shared_ptr<const CBlock> &, const CBlockIndex *pindex);
+ void BlockConnected(ChainstateRole, const std::shared_ptr<const CBlock> &, const CBlockIndex *pindex);
void BlockDisconnected(const std::shared_ptr<const CBlock> &, const CBlockIndex* pindex);
- void ChainStateFlushed(const CBlockLocator &);
+ void ChainStateFlushed(ChainstateRole, const CBlockLocator &);
void BlockChecked(const CBlock&, const BlockValidationState&);
void NewPoWValidBlock(const CBlockIndex *, const std::shared_ptr<const CBlock>&);
};