|
|
|
@ -6,10 +6,11 @@
@@ -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);
@@ -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:
@@ -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); |
|
|
|
|
|
|
|
|
|