mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-11 06:28:31 +01:00
Fire TransactionRemovedFromMempool from mempool
This commit fires TransactionRemovedFromMempool callbacks from the mempool and cleans up a bunch of code.
This commit is contained in:
@@ -7,9 +7,9 @@
|
||||
|
||||
#include <primitives/block.h>
|
||||
#include <scheduler.h>
|
||||
#include <txmempool.h>
|
||||
|
||||
#include <future>
|
||||
#include <unordered_map>
|
||||
#include <utility>
|
||||
|
||||
#include <boost/signals2/signal.hpp>
|
||||
@@ -46,11 +46,6 @@ struct MainSignalsInstance {
|
||||
|
||||
static CMainSignals g_signals;
|
||||
|
||||
// This map has to a separate global instead of a member of MainSignalsInstance,
|
||||
// because RegisterWithMempoolSignals is currently called before RegisterBackgroundSignalScheduler,
|
||||
// so MainSignalsInstance hasn't been created yet.
|
||||
static std::unordered_map<CTxMemPool*, boost::signals2::scoped_connection> g_connNotifyEntryRemoved;
|
||||
|
||||
void CMainSignals::RegisterBackgroundSignalScheduler(CScheduler& scheduler) {
|
||||
assert(!m_internals);
|
||||
m_internals.reset(new MainSignalsInstance(&scheduler));
|
||||
@@ -71,17 +66,6 @@ size_t CMainSignals::CallbacksPending() {
|
||||
return m_internals->m_schedulerClient.CallbacksPending();
|
||||
}
|
||||
|
||||
void CMainSignals::RegisterWithMempoolSignals(CTxMemPool& pool) {
|
||||
g_connNotifyEntryRemoved.emplace(std::piecewise_construct,
|
||||
std::forward_as_tuple(&pool),
|
||||
std::forward_as_tuple(pool.NotifyEntryRemoved.connect(std::bind(&CMainSignals::MempoolEntryRemoved, this, std::placeholders::_1, std::placeholders::_2)))
|
||||
);
|
||||
}
|
||||
|
||||
void CMainSignals::UnregisterWithMempoolSignals(CTxMemPool& pool) {
|
||||
g_connNotifyEntryRemoved.erase(&pool);
|
||||
}
|
||||
|
||||
CMainSignals& GetMainSignals()
|
||||
{
|
||||
return g_signals;
|
||||
@@ -126,13 +110,6 @@ void SyncWithValidationInterfaceQueue() {
|
||||
promise.get_future().wait();
|
||||
}
|
||||
|
||||
void CMainSignals::MempoolEntryRemoved(CTransactionRef ptx, MemPoolRemovalReason reason) {
|
||||
if (reason != MemPoolRemovalReason::BLOCK && reason != MemPoolRemovalReason::CONFLICT) {
|
||||
m_internals->m_schedulerClient.AddToProcessQueue([ptx, this] {
|
||||
m_internals->TransactionRemovedFromMempool(ptx);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
void CMainSignals::UpdatedBlockTip(const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload) {
|
||||
// Dependencies exist that require UpdatedBlockTip events to be delivered in the order in which
|
||||
@@ -150,6 +127,12 @@ void CMainSignals::TransactionAddedToMempool(const CTransactionRef &ptx) {
|
||||
});
|
||||
}
|
||||
|
||||
void CMainSignals::TransactionRemovedFromMempool(const CTransactionRef &ptx) {
|
||||
m_internals->m_schedulerClient.AddToProcessQueue([ptx, this] {
|
||||
m_internals->TransactionRemovedFromMempool(ptx);
|
||||
});
|
||||
}
|
||||
|
||||
void CMainSignals::BlockConnected(const std::shared_ptr<const CBlock> &pblock, const CBlockIndex *pindex, const std::shared_ptr<const std::vector<CTransactionRef>>& pvtxConflicted) {
|
||||
m_internals->m_schedulerClient.AddToProcessQueue([pblock, pindex, pvtxConflicted, this] {
|
||||
m_internals->BlockConnected(pblock, pindex, *pvtxConflicted);
|
||||
|
||||
Reference in New Issue
Block a user