Changeset View
Changeset View
Standalone View
Standalone View
src/validationinterface.cpp
Show First 20 Lines • Show All 80 Lines • ▼ Show 20 Lines | size_t CMainSignals::CallbacksPending() { | ||||
} | } | ||||
return m_internals->m_schedulerClient.CallbacksPending(); | return m_internals->m_schedulerClient.CallbacksPending(); | ||||
} | } | ||||
CMainSignals &GetMainSignals() { | CMainSignals &GetMainSignals() { | ||||
return g_signals; | return g_signals; | ||||
} | } | ||||
void RegisterValidationInterface(CValidationInterface *pwalletIn) { | void RegisterSharedValidationInterface( | ||||
std::shared_ptr<CValidationInterface> pwalletIn) { | |||||
// Each connection captures pwalletIn to ensure that each callback is | |||||
// executed before pwalletIn is destroyed. For more details see #18338. | |||||
ValidationInterfaceConnections &conns = | ValidationInterfaceConnections &conns = | ||||
g_signals.m_internals->m_connMainSignals[pwalletIn]; | g_signals.m_internals->m_connMainSignals[pwalletIn.get()]; | ||||
conns.UpdatedBlockTip = g_signals.m_internals->UpdatedBlockTip.connect( | conns.UpdatedBlockTip = g_signals.m_internals->UpdatedBlockTip.connect( | ||||
std::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, | std::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, | ||||
std::placeholders::_1, std::placeholders::_2, | std::placeholders::_1, std::placeholders::_2, | ||||
std::placeholders::_3)); | std::placeholders::_3)); | ||||
conns.TransactionAddedToMempool = | conns.TransactionAddedToMempool = | ||||
g_signals.m_internals->TransactionAddedToMempool.connect( | g_signals.m_internals->TransactionAddedToMempool.connect( | ||||
std::bind(&CValidationInterface::TransactionAddedToMempool, | std::bind(&CValidationInterface::TransactionAddedToMempool, | ||||
pwalletIn, std::placeholders::_1)); | pwalletIn, std::placeholders::_1)); | ||||
Show All 14 Lines | void RegisterSharedValidationInterface( | ||||
conns.BlockChecked = g_signals.m_internals->BlockChecked.connect( | conns.BlockChecked = g_signals.m_internals->BlockChecked.connect( | ||||
std::bind(&CValidationInterface::BlockChecked, pwalletIn, | std::bind(&CValidationInterface::BlockChecked, pwalletIn, | ||||
std::placeholders::_1, std::placeholders::_2)); | std::placeholders::_1, std::placeholders::_2)); | ||||
conns.NewPoWValidBlock = g_signals.m_internals->NewPoWValidBlock.connect( | conns.NewPoWValidBlock = g_signals.m_internals->NewPoWValidBlock.connect( | ||||
std::bind(&CValidationInterface::NewPoWValidBlock, pwalletIn, | std::bind(&CValidationInterface::NewPoWValidBlock, pwalletIn, | ||||
std::placeholders::_1, std::placeholders::_2)); | std::placeholders::_1, std::placeholders::_2)); | ||||
} | } | ||||
void RegisterValidationInterface(CValidationInterface *callbacks) { | |||||
// Create a shared_ptr with a no-op deleter - CValidationInterface lifecycle | |||||
// is managed by the caller. | |||||
RegisterSharedValidationInterface( | |||||
{callbacks, [](CValidationInterface *) {}}); | |||||
} | |||||
void UnregisterSharedValidationInterface( | |||||
std::shared_ptr<CValidationInterface> callbacks) { | |||||
UnregisterValidationInterface(callbacks.get()); | |||||
} | |||||
void UnregisterValidationInterface(CValidationInterface *pwalletIn) { | void UnregisterValidationInterface(CValidationInterface *pwalletIn) { | ||||
if (g_signals.m_internals) { | if (g_signals.m_internals) { | ||||
g_signals.m_internals->m_connMainSignals.erase(pwalletIn); | g_signals.m_internals->m_connMainSignals.erase(pwalletIn); | ||||
} | } | ||||
} | } | ||||
void UnregisterAllValidationInterfaces() { | void UnregisterAllValidationInterfaces() { | ||||
if (!g_signals.m_internals) { | if (!g_signals.m_internals) { | ||||
▲ Show 20 Lines • Show All 70 Lines • Show Last 20 Lines |