mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-10 22:18:54 +01:00
Also call other wallet notify callbacks in scheduler thread
This runs Block{Connected,Disconnected}, SetBestChain, Inventory,
and TransactionAddedToMempool on the background scheduler thread.
Of those, only BlockConnected is used outside of Wallet/ZMQ, and
is used only for orphan transaction removal in net_processing,
something which does not need to be synchronous with anything
else.
This partially reverts #9583, re-enabling some of the gains from
#7946. This does not, however, re-enable the gains achieved by
repeatedly releasing cs_main between each transaction processed.
This commit is contained in:
@@ -47,7 +47,11 @@ class CValidationInterface {
|
||||
protected:
|
||||
/** Notifies listeners of updated block chain tip */
|
||||
virtual void UpdatedBlockTip(const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload) {}
|
||||
/** Notifies listeners of a transaction having been added to mempool. */
|
||||
/**
|
||||
* Notifies listeners of a transaction having been added to mempool.
|
||||
*
|
||||
* Called on a background thread.
|
||||
*/
|
||||
virtual void TransactionAddedToMempool(const CTransactionRef &ptxn) {}
|
||||
/**
|
||||
* Notifies listeners of a transaction leaving mempool.
|
||||
@@ -63,13 +67,27 @@ protected:
|
||||
/**
|
||||
* Notifies listeners of a block being connected.
|
||||
* Provides a vector of transactions evicted from the mempool as a result.
|
||||
*
|
||||
* Called on a background thread.
|
||||
*/
|
||||
virtual void BlockConnected(const std::shared_ptr<const CBlock> &block, const CBlockIndex *pindex, const std::vector<CTransactionRef> &txnConflicted) {}
|
||||
/** Notifies listeners of a block being disconnected */
|
||||
/**
|
||||
* Notifies listeners of a block being disconnected
|
||||
*
|
||||
* Called on a background thread.
|
||||
*/
|
||||
virtual void BlockDisconnected(const std::shared_ptr<const CBlock> &block) {}
|
||||
/** Notifies listeners of the new active block chain on-disk. */
|
||||
/**
|
||||
* Notifies listeners of the new active block chain on-disk.
|
||||
*
|
||||
* Called on a background thread.
|
||||
*/
|
||||
virtual void SetBestChain(const CBlockLocator &locator) {}
|
||||
/** Notifies listeners about an inventory item being seen on the network. */
|
||||
/**
|
||||
* Notifies listeners about an inventory item being seen on the network.
|
||||
*
|
||||
* Called on a background thread.
|
||||
*/
|
||||
virtual void Inventory(const uint256 &hash) {}
|
||||
/** Tells listeners to broadcast their data. */
|
||||
virtual void ResendWalletTransactions(int64_t nBestBlockTime, CConnman* connman) {}
|
||||
@@ -116,7 +134,7 @@ public:
|
||||
|
||||
void UpdatedBlockTip(const CBlockIndex *, const CBlockIndex *, bool fInitialDownload);
|
||||
void TransactionAddedToMempool(const CTransactionRef &);
|
||||
void BlockConnected(const std::shared_ptr<const CBlock> &, const CBlockIndex *pindex, const std::vector<CTransactionRef> &);
|
||||
void BlockConnected(const std::shared_ptr<const CBlock> &, const CBlockIndex *pindex, const std::shared_ptr<const std::vector<CTransactionRef>> &);
|
||||
void BlockDisconnected(const std::shared_ptr<const CBlock> &);
|
||||
void SetBestChain(const CBlockLocator &);
|
||||
void Inventory(const uint256 &);
|
||||
|
||||
Reference in New Issue
Block a user