|
|
@ -11,9 +11,11 @@ |
|
|
|
#include <sync.h> |
|
|
|
#include <sync.h> |
|
|
|
#include <txmempool.h> |
|
|
|
#include <txmempool.h> |
|
|
|
#include <util.h> |
|
|
|
#include <util.h> |
|
|
|
|
|
|
|
#include <validation.h> |
|
|
|
|
|
|
|
|
|
|
|
#include <list> |
|
|
|
#include <list> |
|
|
|
#include <atomic> |
|
|
|
#include <atomic> |
|
|
|
|
|
|
|
#include <future> |
|
|
|
|
|
|
|
|
|
|
|
#include <boost/signals2/signal.hpp> |
|
|
|
#include <boost/signals2/signal.hpp> |
|
|
|
|
|
|
|
|
|
|
@ -118,6 +120,16 @@ void CallFunctionInValidationInterfaceQueue(std::function<void ()> func) { |
|
|
|
g_signals.m_internals->m_schedulerClient.AddToProcessQueue(std::move(func)); |
|
|
|
g_signals.m_internals->m_schedulerClient.AddToProcessQueue(std::move(func)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void SyncWithValidationInterfaceQueue() { |
|
|
|
|
|
|
|
AssertLockNotHeld(cs_main); |
|
|
|
|
|
|
|
// Block until the validation queue drains
|
|
|
|
|
|
|
|
std::promise<void> promise; |
|
|
|
|
|
|
|
CallFunctionInValidationInterfaceQueue([&promise] { |
|
|
|
|
|
|
|
promise.set_value(); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
promise.get_future().wait(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void CMainSignals::MempoolEntryRemoved(CTransactionRef ptx, MemPoolRemovalReason reason) { |
|
|
|
void CMainSignals::MempoolEntryRemoved(CTransactionRef ptx, MemPoolRemovalReason reason) { |
|
|
|
if (reason != MemPoolRemovalReason::BLOCK && reason != MemPoolRemovalReason::CONFLICT) { |
|
|
|
if (reason != MemPoolRemovalReason::BLOCK && reason != MemPoolRemovalReason::CONFLICT) { |
|
|
|
m_internals->m_schedulerClient.AddToProcessQueue([ptx, this] { |
|
|
|
m_internals->m_schedulerClient.AddToProcessQueue([ptx, this] { |
|
|
|