@ -5,45 +5,99 @@
# include "validationinterface.h"
# 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 ;
static CMainSignals g_signals ;
CMainSignals : : CMainSignals ( ) {
m_internals . reset ( new MainSignalsInstance ( ) ) ;
}
CMainSignals & GetMainSignals ( )
CMainSignals & GetMainSignals ( )
{
{
return g_signals ;
return g_signals ;
}
}
void RegisterValidationInterface ( CValidationInterface * pwalletIn ) {
void RegisterValidationInterface ( CValidationInterface * pwalletIn ) {
g_signals . UpdatedBlockTip . connect ( boost : : bind ( & CValidationInterface : : UpdatedBlockTip , pwalletIn , _1 , _2 , _3 ) ) ;
g_signals . m_internals - > UpdatedBlockTip . connect ( boost : : bind ( & CValidationInterface : : UpdatedBlockTip , pwalletIn , _1 , _2 , _3 ) ) ;
g_signals . TransactionAddedToMempool . connect ( boost : : bind ( & CValidationInterface : : TransactionAddedToMempool , pwalletIn , _1 ) ) ;
g_signals . m_internals - > TransactionAddedToMempool . connect ( boost : : bind ( & CValidationInterface : : TransactionAddedToMempool , pwalletIn , _1 ) ) ;
g_signals . BlockConnected . connect ( boost : : bind ( & CValidationInterface : : BlockConnected , pwalletIn , _1 , _2 , _3 ) ) ;
g_signals . m_internals - > BlockConnected . connect ( boost : : bind ( & CValidationInterface : : BlockConnected , pwalletIn , _1 , _2 , _3 ) ) ;
g_signals . BlockDisconnected . connect ( boost : : bind ( & CValidationInterface : : BlockDisconnected , pwalletIn , _1 ) ) ;
g_signals . m_internals - > BlockDisconnected . connect ( boost : : bind ( & CValidationInterface : : BlockDisconnected , pwalletIn , _1 ) ) ;
g_signals . SetBestChain . connect ( boost : : bind ( & CValidationInterface : : SetBestChain , pwalletIn , _1 ) ) ;
g_signals . m_internals - > SetBestChain . connect ( boost : : bind ( & CValidationInterface : : SetBestChain , pwalletIn , _1 ) ) ;
g_signals . Inventory . connect ( boost : : bind ( & CValidationInterface : : Inventory , pwalletIn , _1 ) ) ;
g_signals . m_internals - > Inventory . connect ( boost : : bind ( & CValidationInterface : : Inventory , pwalletIn , _1 ) ) ;
g_signals . Broadcast . connect ( boost : : bind ( & CValidationInterface : : ResendWalletTransactions , pwalletIn , _1 , _2 ) ) ;
g_signals . m_internals - > Broadcast . connect ( boost : : bind ( & CValidationInterface : : ResendWalletTransactions , pwalletIn , _1 , _2 ) ) ;
g_signals . BlockChecked . connect ( boost : : bind ( & CValidationInterface : : BlockChecked , pwalletIn , _1 , _2 ) ) ;
g_signals . m_internals - > BlockChecked . connect ( boost : : bind ( & CValidationInterface : : BlockChecked , pwalletIn , _1 , _2 ) ) ;
g_signals . NewPoWValidBlock . connect ( boost : : bind ( & CValidationInterface : : NewPoWValidBlock , pwalletIn , _1 , _2 ) ) ;
g_signals . m_internals - > NewPoWValidBlock . connect ( boost : : bind ( & CValidationInterface : : NewPoWValidBlock , pwalletIn , _1 , _2 ) ) ;
}
}
void UnregisterValidationInterface ( CValidationInterface * pwalletIn ) {
void UnregisterValidationInterface ( CValidationInterface * pwalletIn ) {
g_signals . BlockChecked . disconnect ( boost : : bind ( & CValidationInterface : : BlockChecked , pwalletIn , _1 , _2 ) ) ;
g_signals . m_internals - > BlockChecked . disconnect ( boost : : bind ( & CValidationInterface : : BlockChecked , pwalletIn , _1 , _2 ) ) ;
g_signals . Broadcast . disconnect ( boost : : bind ( & CValidationInterface : : ResendWalletTransactions , pwalletIn , _1 , _2 ) ) ;
g_signals . m_internals - > Broadcast . disconnect ( boost : : bind ( & CValidationInterface : : ResendWalletTransactions , pwalletIn , _1 , _2 ) ) ;
g_signals . Inventory . disconnect ( boost : : bind ( & CValidationInterface : : Inventory , pwalletIn , _1 ) ) ;
g_signals . m_internals - > Inventory . disconnect ( boost : : bind ( & CValidationInterface : : Inventory , pwalletIn , _1 ) ) ;
g_signals . SetBestChain . disconnect ( boost : : bind ( & CValidationInterface : : SetBestChain , pwalletIn , _1 ) ) ;
g_signals . m_internals - > SetBestChain . disconnect ( boost : : bind ( & CValidationInterface : : SetBestChain , pwalletIn , _1 ) ) ;
g_signals . TransactionAddedToMempool . disconnect ( boost : : bind ( & CValidationInterface : : TransactionAddedToMempool , pwalletIn , _1 ) ) ;
g_signals . m_internals - > TransactionAddedToMempool . disconnect ( boost : : bind ( & CValidationInterface : : TransactionAddedToMempool , pwalletIn , _1 ) ) ;
g_signals . BlockConnected . disconnect ( boost : : bind ( & CValidationInterface : : BlockConnected , pwalletIn , _1 , _2 , _3 ) ) ;
g_signals . m_internals - > BlockConnected . disconnect ( boost : : bind ( & CValidationInterface : : BlockConnected , pwalletIn , _1 , _2 , _3 ) ) ;
g_signals . BlockDisconnected . disconnect ( boost : : bind ( & CValidationInterface : : BlockDisconnected , pwalletIn , _1 ) ) ;
g_signals . m_internals - > BlockDisconnected . disconnect ( boost : : bind ( & CValidationInterface : : BlockDisconnected , pwalletIn , _1 ) ) ;
g_signals . UpdatedBlockTip . disconnect ( boost : : bind ( & CValidationInterface : : UpdatedBlockTip , pwalletIn , _1 , _2 , _3 ) ) ;
g_signals . m_internals - > 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 - > NewPoWValidBlock . disconnect ( boost : : bind ( & CValidationInterface : : NewPoWValidBlock , pwalletIn , _1 , _2 ) ) ;
}
}
void UnregisterAllValidationInterfaces ( ) {
void UnregisterAllValidationInterfaces ( ) {
g_signals . BlockChecked . disconnect_all_slots ( ) ;
g_signals . m_internals - > BlockChecked . disconnect_all_slots ( ) ;
g_signals . Broadcast . disconnect_all_slots ( ) ;
g_signals . m_internals - > Broadcast . disconnect_all_slots ( ) ;
g_signals . Inventory . disconnect_all_slots ( ) ;
g_signals . m_internals - > Inventory . disconnect_all_slots ( ) ;
g_signals . SetBestChain . disconnect_all_slots ( ) ;
g_signals . m_internals - > SetBestChain . disconnect_all_slots ( ) ;
g_signals . TransactionAddedToMempool . disconnect_all_slots ( ) ;
g_signals . m_internals - > TransactionAddedToMempool . disconnect_all_slots ( ) ;
g_signals . BlockConnected . disconnect_all_slots ( ) ;
g_signals . m_internals - > BlockConnected . disconnect_all_slots ( ) ;
g_signals . BlockDisconnected . disconnect_all_slots ( ) ;
g_signals . m_internals - > BlockDisconnected . disconnect_all_slots ( ) ;
g_signals . UpdatedBlockTip . disconnect_all_slots ( ) ;
g_signals . m_internals - > UpdatedBlockTip . disconnect_all_slots ( ) ;
g_signals . NewPoWValidBlock . 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 ) ;
}
}