Dogecoin Core  1.14.2
P2P Digital Currency
validationinterface.cpp
Go to the documentation of this file.
1 // Copyright (c) 2009-2010 Satoshi Nakamoto
2 // Copyright (c) 2009-2016 The Bitcoin Core developers
3 // Distributed under the MIT software license, see the accompanying
4 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
5 
6 #include "validationinterface.h"
7 
8 #include <boost/bind/bind.hpp>
9 
10 static CMainSignals g_signals;
11 
13 {
14  return g_signals;
15 }
16 
18  g_signals.UpdatedBlockTip.connect(boost::bind(&CValidationInterface::UpdatedBlockTip,
19  pwalletIn, boost::placeholders::_1,
20  boost::placeholders::_2,
21  boost::placeholders::_3));
22  g_signals.SyncTransaction.connect(boost::bind(&CValidationInterface::SyncTransaction,
23  pwalletIn, boost::placeholders::_1,
24  boost::placeholders::_2,
25  boost::placeholders::_3));
26  g_signals.UpdatedTransaction.connect(boost::bind(&CValidationInterface::UpdatedTransaction,
27  pwalletIn, boost::placeholders::_1));
28  g_signals.SetBestChain.connect(boost::bind(&CValidationInterface::SetBestChain,
29  pwalletIn, boost::placeholders::_1));
30  g_signals.Inventory.connect(boost::bind(&CValidationInterface::Inventory,
31  pwalletIn, boost::placeholders::_1));
32  g_signals.Broadcast.connect(boost::bind(&CValidationInterface::ResendWalletTransactions,
33  pwalletIn, boost::placeholders::_1, boost::placeholders::_2));
34  g_signals.BlockChecked.connect(boost::bind(&CValidationInterface::BlockChecked,
35  pwalletIn, boost::placeholders::_1,
36  boost::placeholders::_2));
37  g_signals.ScriptForMining.connect(boost::bind(&CValidationInterface::GetScriptForMining,
38  pwalletIn, boost::placeholders::_1));
39  g_signals.BlockFound.connect(boost::bind(&CValidationInterface::ResetRequestCount,
40  pwalletIn, boost::placeholders::_1));
41  g_signals.NewPoWValidBlock.connect(boost::bind(&CValidationInterface::NewPoWValidBlock,
42  pwalletIn, boost::placeholders::_1,
43  boost::placeholders::_2));
44 }
45 
47  g_signals.BlockFound.disconnect(boost::bind(&CValidationInterface::ResetRequestCount,
48  pwalletIn, boost::placeholders::_1));
49  g_signals.ScriptForMining.disconnect(boost::bind(&CValidationInterface::GetScriptForMining,
50  pwalletIn, boost::placeholders::_1));
51  g_signals.BlockChecked.disconnect(boost::bind(&CValidationInterface::BlockChecked,
52  pwalletIn, boost::placeholders::_1,
53  boost::placeholders::_2));
54  g_signals.Broadcast.disconnect(boost::bind(&CValidationInterface::ResendWalletTransactions,
55  pwalletIn, boost::placeholders::_1,
56  boost::placeholders::_2));
57  g_signals.Inventory.disconnect(boost::bind(&CValidationInterface::Inventory,
58  pwalletIn, boost::placeholders::_1));
59  g_signals.SetBestChain.disconnect(boost::bind(&CValidationInterface::SetBestChain,
60  pwalletIn, boost::placeholders::_1));
61  g_signals.UpdatedTransaction.disconnect(boost::bind(&CValidationInterface::UpdatedTransaction,
62  pwalletIn, boost::placeholders::_1));
63  g_signals.SyncTransaction.disconnect(boost::bind(&CValidationInterface::SyncTransaction,
64  pwalletIn, boost::placeholders::_1,
65  boost::placeholders::_2,
66  boost::placeholders::_3));
67  g_signals.UpdatedBlockTip.disconnect(boost::bind(&CValidationInterface::UpdatedBlockTip,
68  pwalletIn, boost::placeholders::_1,
69  boost::placeholders::_2,
70  boost::placeholders::_3));
71  g_signals.NewPoWValidBlock.disconnect(boost::bind(&CValidationInterface::NewPoWValidBlock,
72  pwalletIn, boost::placeholders::_1,
73  boost::placeholders::_2));
74 }
75 
77  g_signals.BlockFound.disconnect_all_slots();
78  g_signals.ScriptForMining.disconnect_all_slots();
79  g_signals.BlockChecked.disconnect_all_slots();
80  g_signals.Broadcast.disconnect_all_slots();
81  g_signals.Inventory.disconnect_all_slots();
82  g_signals.SetBestChain.disconnect_all_slots();
83  g_signals.UpdatedTransaction.disconnect_all_slots();
84  g_signals.SyncTransaction.disconnect_all_slots();
85  g_signals.UpdatedBlockTip.disconnect_all_slots();
86  g_signals.NewPoWValidBlock.disconnect_all_slots();
87 }
virtual void NewPoWValidBlock(const CBlockIndex *pindex, const std::shared_ptr< const CBlock > &block)
virtual void GetScriptForMining(boost::shared_ptr< CReserveScript > &)
virtual void ResendWalletTransactions(int64_t nBestBlockTime, CConnman *connman)
virtual void SyncTransaction(const CTransaction &tx, const CBlockIndex *pindex, int posInBlock)
virtual void UpdatedBlockTip(const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload)
virtual void UpdatedTransaction(const uint256 &hash)
virtual void SetBestChain(const CBlockLocator &locator)
virtual void Inventory(const uint256 &hash)
virtual void BlockChecked(const CBlock &, const CValidationState &)
virtual void ResetRequestCount(const uint256 &hash)
boost::signals2::signal< void(const CBlockLocator &)> SetBestChain
Notifies listeners of a new active block chain.
boost::signals2::signal< void(const uint256 &)> BlockFound
Notifies listeners that a block has been successfully mined.
boost::signals2::signal< void(const uint256 &)> Inventory
Notifies listeners about an inventory item being seen on the network.
boost::signals2::signal< void(boost::shared_ptr< CReserveScript > &)> ScriptForMining
Notifies listeners that a key for mining is required (coinbase)
boost::signals2::signal< void(const uint256 &)> UpdatedTransaction
Notifies listeners of an updated transaction without new data (for now: a coinbase potentially becomi...
boost::signals2::signal< void(const CBlock &, const CValidationState &)> BlockChecked
Notifies listeners of a block validation result.
boost::signals2::signal< void(const CBlockIndex *, const std::shared_ptr< const CBlock > &)> NewPoWValidBlock
Notifies listeners that a block which builds directly on our current tip has been received and connec...
boost::signals2::signal< void(int64_t nBestBlockTime, CConnman *connman)> Broadcast
Tells listeners to broadcast their data.
boost::signals2::signal< void(const CBlockIndex *, const CBlockIndex *, bool fInitialDownload)> UpdatedBlockTip
Notifies listeners of updated block chain tip.
boost::signals2::signal< void(const CTransaction &, const CBlockIndex *pindex, int posInBlock)> SyncTransaction
Notifies listeners of updated transaction data (transaction, and optionally the block it is found in)...
CMainSignals & GetMainSignals()
void UnregisterValidationInterface(CValidationInterface *pwalletIn)
Unregister a wallet from core.
void UnregisterAllValidationInterfaces()
Unregister all wallets from core.
void RegisterValidationInterface(CValidationInterface *pwalletIn)
Register a wallet to receive updates from core.