|
|
|
@ -6,10 +6,11 @@
|
|
|
|
|
#ifndef BITCOIN_VALIDATIONINTERFACE_H
|
|
|
|
|
#define BITCOIN_VALIDATIONINTERFACE_H
|
|
|
|
|
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
#include "primitives/transaction.h" // CTransaction(Ref)
|
|
|
|
|
|
|
|
|
|
#include <functional>
|
|
|
|
|
#include <memory>
|
|
|
|
|
|
|
|
|
|
class CBlock;
|
|
|
|
|
class CBlockIndex;
|
|
|
|
|
struct CBlockLocator;
|
|
|
|
@ -31,6 +32,16 @@ void RegisterValidationInterface(CValidationInterface* pwalletIn);
|
|
|
|
|
void UnregisterValidationInterface(CValidationInterface* pwalletIn);
|
|
|
|
|
/** Unregister all wallets from core */
|
|
|
|
|
void UnregisterAllValidationInterfaces();
|
|
|
|
|
/**
|
|
|
|
|
* Pushes a function to callback onto the notification queue, guaranteeing any
|
|
|
|
|
* callbacks generated prior to now are finished when the function is called.
|
|
|
|
|
*
|
|
|
|
|
* Be very careful blocking on func to be called if any locks are held -
|
|
|
|
|
* validation interface clients may not be able to make progress as they often
|
|
|
|
|
* wait for things like cs_main, so blocking until func is called with cs_main
|
|
|
|
|
* will result in a deadlock (that DEBUG_LOCKORDER will miss).
|
|
|
|
|
*/
|
|
|
|
|
void CallFunctionInValidationInterfaceQueue(std::function<void ()> func);
|
|
|
|
|
|
|
|
|
|
class CValidationInterface {
|
|
|
|
|
protected:
|
|
|
|
@ -86,6 +97,7 @@ private:
|
|
|
|
|
friend void ::RegisterValidationInterface(CValidationInterface*);
|
|
|
|
|
friend void ::UnregisterValidationInterface(CValidationInterface*);
|
|
|
|
|
friend void ::UnregisterAllValidationInterfaces();
|
|
|
|
|
friend void ::CallFunctionInValidationInterfaceQueue(std::function<void ()> func);
|
|
|
|
|
|
|
|
|
|
void MempoolEntryRemoved(CTransactionRef tx, MemPoolRemovalReason reason);
|
|
|
|
|
|
|
|
|
|