@@ -5,45 +5,99 @@
#include " validationinterface.h"
+#include < boost/signals2/signal.hpp>
+
+struct MainSignalsInstance {
+ boost::signals2::signal<void (const CBlockIndex *, const CBlockIndex *, bool fInitialDownload )> UpdatedBlockTip;
+ boost::signals2::signal<void (const CTransactionRef &)> TransactionAddedToMempool;
+ boost::signals2::signal<void (const std::shared_ptr<const CBlock> &, const CBlockIndex *pindex, const std::vector<CTransactionRef>&)> BlockConnected;
+ boost::signals2::signal<void (const std::shared_ptr<const CBlock> &)> BlockDisconnected;
+ boost::signals2::signal<void (const CBlockLocator &)> SetBestChain;
+ boost::signals2::signal<void (const uint256 &)> Inventory;
+ boost::signals2::signal<void (int64_t nBestBlockTime, CConnman* connman)> Broadcast;
+ boost::signals2::signal<void (const CBlock&, const CValidationState&)> BlockChecked;
+ boost::signals2::signal<void (const CBlockIndex *, const std::shared_ptr<const CBlock>&)> NewPoWValidBlock;
+};
+
static CMainSignals g_signals;
+CMainSignals::CMainSignals () {
+ m_internals.reset (new MainSignalsInstance ());
+}
+
CMainSignals& GetMainSignals ()
{
return g_signals;
}
void RegisterValidationInterface (CValidationInterface* pwalletIn) {
- g_signals.UpdatedBlockTip .connect (boost::bind (&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3));
- g_signals.TransactionAddedToMempool .connect (boost::bind (&CValidationInterface::TransactionAddedToMempool, pwalletIn, _1));
- g_signals.BlockConnected .connect (boost::bind (&CValidationInterface::BlockConnected, pwalletIn, _1, _2, _3));
- g_signals.BlockDisconnected .connect (boost::bind (&CValidationInterface::BlockDisconnected, pwalletIn, _1));
- g_signals.SetBestChain .connect (boost::bind (&CValidationInterface::SetBestChain, pwalletIn, _1));
- g_signals.Inventory .connect (boost::bind (&CValidationInterface::Inventory, pwalletIn, _1));
- g_signals.Broadcast .connect (boost::bind (&CValidationInterface::ResendWalletTransactions, pwalletIn, _1, _2));
- g_signals.BlockChecked .connect (boost::bind (&CValidationInterface::BlockChecked, pwalletIn, _1, _2));
- g_signals.NewPoWValidBlock .connect (boost::bind (&CValidationInterface::NewPoWValidBlock, pwalletIn, _1, _2));
+ g_signals.m_internals -> UpdatedBlockTip.connect (boost::bind (&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3));
+ g_signals.m_internals -> TransactionAddedToMempool.connect (boost::bind (&CValidationInterface::TransactionAddedToMempool, pwalletIn, _1));
+ g_signals.m_internals -> BlockConnected.connect (boost::bind (&CValidationInterface::BlockConnected, pwalletIn, _1, _2, _3));
+ g_signals.m_internals -> BlockDisconnected.connect (boost::bind (&CValidationInterface::BlockDisconnected, pwalletIn, _1));
+ g_signals.m_internals -> SetBestChain.connect (boost::bind (&CValidationInterface::SetBestChain, pwalletIn, _1));
+ g_signals.m_internals -> Inventory.connect (boost::bind (&CValidationInterface::Inventory, pwalletIn, _1));
+ g_signals.m_internals -> Broadcast.connect (boost::bind (&CValidationInterface::ResendWalletTransactions, pwalletIn, _1, _2));
+ g_signals.m_internals -> BlockChecked.connect (boost::bind (&CValidationInterface::BlockChecked, pwalletIn, _1, _2));
+ g_signals.m_internals -> NewPoWValidBlock.connect (boost::bind (&CValidationInterface::NewPoWValidBlock, pwalletIn, _1, _2));
}
void UnregisterValidationInterface (CValidationInterface* pwalletIn) {
- g_signals.BlockChecked .disconnect (boost::bind (&CValidationInterface::BlockChecked, pwalletIn, _1, _2));
- g_signals.Broadcast .disconnect (boost::bind (&CValidationInterface::ResendWalletTransactions, pwalletIn, _1, _2));
- g_signals.Inventory .disconnect (boost::bind (&CValidationInterface::Inventory, pwalletIn, _1));
- g_signals.SetBestChain .disconnect (boost::bind (&CValidationInterface::SetBestChain, pwalletIn, _1));
- g_signals.TransactionAddedToMempool .disconnect (boost::bind (&CValidationInterface::TransactionAddedToMempool, pwalletIn, _1));
- g_signals.BlockConnected .disconnect (boost::bind (&CValidationInterface::BlockConnected, pwalletIn, _1, _2, _3));
- g_signals.BlockDisconnected .disconnect (boost::bind (&CValidationInterface::BlockDisconnected, pwalletIn, _1));
- g_signals.UpdatedBlockTip .disconnect (boost::bind (&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3));
- g_signals.NewPoWValidBlock .disconnect (boost::bind (&CValidationInterface::NewPoWValidBlock, pwalletIn, _1, _2));
+ g_signals.m_internals -> BlockChecked.disconnect (boost::bind (&CValidationInterface::BlockChecked, pwalletIn, _1, _2));
+ g_signals.m_internals -> Broadcast.disconnect (boost::bind (&CValidationInterface::ResendWalletTransactions, pwalletIn, _1, _2));
+ g_signals.m_internals -> Inventory.disconnect (boost::bind (&CValidationInterface::Inventory, pwalletIn, _1));
+ g_signals.m_internals -> SetBestChain.disconnect (boost::bind (&CValidationInterface::SetBestChain, pwalletIn, _1));
+ g_signals.m_internals -> TransactionAddedToMempool.disconnect (boost::bind (&CValidationInterface::TransactionAddedToMempool, pwalletIn, _1));
+ g_signals.m_internals -> BlockConnected.disconnect (boost::bind (&CValidationInterface::BlockConnected, pwalletIn, _1, _2, _3));
+ g_signals.m_internals -> BlockDisconnected.disconnect (boost::bind (&CValidationInterface::BlockDisconnected, pwalletIn, _1));
+ g_signals.m_internals -> UpdatedBlockTip.disconnect (boost::bind (&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3));
+ g_signals.m_internals -> NewPoWValidBlock.disconnect (boost::bind (&CValidationInterface::NewPoWValidBlock, pwalletIn, _1, _2));
}
void UnregisterAllValidationInterfaces () {
- g_signals.BlockChecked .disconnect_all_slots ();
- g_signals.Broadcast .disconnect_all_slots ();
- g_signals.Inventory .disconnect_all_slots ();
- g_signals.SetBestChain .disconnect_all_slots ();
- g_signals.TransactionAddedToMempool .disconnect_all_slots ();
- g_signals.BlockConnected .disconnect_all_slots ();
- g_signals.BlockDisconnected .disconnect_all_slots ();
- g_signals.UpdatedBlockTip .disconnect_all_slots ();
- g_signals.NewPoWValidBlock .disconnect_all_slots ();
+ g_signals.m_internals ->BlockChecked.disconnect_all_slots ();
+ g_signals.m_internals ->Broadcast.disconnect_all_slots ();
+ g_signals.m_internals ->Inventory.disconnect_all_slots ();
+ g_signals.m_internals ->SetBestChain.disconnect_all_slots ();
+ g_signals.m_internals ->TransactionAddedToMempool.disconnect_all_slots ();
+ g_signals.m_internals ->BlockConnected.disconnect_all_slots ();
+ g_signals.m_internals ->BlockDisconnected.disconnect_all_slots ();
+ g_signals.m_internals ->UpdatedBlockTip.disconnect_all_slots ();
+ g_signals.m_internals ->NewPoWValidBlock.disconnect_all_slots ();
+}
+
+void CMainSignals::UpdatedBlockTip (const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload ) {
+ m_internals->UpdatedBlockTip (pindexNew, pindexFork, fInitialDownload );
+}
+
+void CMainSignals::TransactionAddedToMempool (const CTransactionRef &ptx) {
+ m_internals->TransactionAddedToMempool (ptx);
+}
+
+void CMainSignals::BlockConnected (const std::shared_ptr<const CBlock> &pblock, const CBlockIndex *pindex, const std::vector<CTransactionRef>& vtxConflicted) {
+ m_internals->BlockConnected (pblock, pindex, vtxConflicted);
+}
+
+void CMainSignals::BlockDisconnected (const std::shared_ptr<const CBlock> &pblock) {
+ m_internals->BlockDisconnected (pblock);
+}
+
+void CMainSignals::SetBestChain (const CBlockLocator &locator) {
+ m_internals->SetBestChain (locator);
+}
+
+void CMainSignals::Inventory (const uint256 &hash) {
+ m_internals->Inventory (hash);
+}
+
+void CMainSignals::Broadcast (int64_t nBestBlockTime, CConnman* connman) {
+ m_internals->Broadcast (nBestBlockTime, connman);
+}
+
+void CMainSignals::BlockChecked (const CBlock& block, const CValidationState& state) {
+ m_internals->BlockChecked (block, state);
+}
+
+void CMainSignals::NewPoWValidBlock (const CBlockIndex *pindex, const std::shared_ptr<const CBlock> &block) {
+ m_internals->NewPoWValidBlock (pindex, block);
}
0 comments on commit
3a19fed