Skip to content

Commit df71481

Browse files
committed
Implement ChainTip signal.
1 parent c605d98 commit df71481

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/validationinterface.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ void RegisterValidationInterface(CValidationInterface* pwalletIn)
1717
{
1818
g_signals.UpdatedBlockTip.connect(boost::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3));
1919
g_signals.SyncTransaction.connect(boost::bind(&CValidationInterface::SyncTransaction, pwalletIn, _1, _2, _3));
20+
g_signals.ChainTip.connect(boost::bind(&CValidationInterface::ChainTip, pwalletIn, _1, _2, _3));
2021
g_signals.NotifyTransactionLock.connect(boost::bind(&CValidationInterface::NotifyTransactionLock, pwalletIn, _1));
2122
g_signals.UpdatedTransaction.connect(boost::bind(&CValidationInterface::UpdatedTransaction, pwalletIn, _1));
2223
g_signals.SetBestChain.connect(boost::bind(&CValidationInterface::SetBestChain, pwalletIn, _1));
@@ -34,6 +35,7 @@ void UnregisterValidationInterface(CValidationInterface* pwalletIn)
3435
g_signals.UpdatedTransaction.disconnect(boost::bind(&CValidationInterface::UpdatedTransaction, pwalletIn, _1));
3536
g_signals.NotifyTransactionLock.disconnect(boost::bind(&CValidationInterface::NotifyTransactionLock, pwalletIn, _1));
3637
g_signals.SyncTransaction.disconnect(boost::bind(&CValidationInterface::SyncTransaction, pwalletIn, _1, _2, _3));
38+
g_signals.ChainTip.disconnect(boost::bind(&CValidationInterface::ChainTip, pwalletIn, _1, _2, _3));
3739
g_signals.UpdatedBlockTip.disconnect(boost::bind(&CValidationInterface::UpdatedBlockTip, pwalletIn, _1, _2, _3));
3840
}
3941

@@ -46,5 +48,6 @@ void UnregisterAllValidationInterfaces()
4648
g_signals.UpdatedTransaction.disconnect_all_slots();
4749
g_signals.NotifyTransactionLock.disconnect_all_slots();
4850
g_signals.SyncTransaction.disconnect_all_slots();
51+
g_signals.ChainTip.disconnect_all_slots();
4952
g_signals.UpdatedBlockTip.disconnect_all_slots();
5053
}

src/validationinterface.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
#ifndef BITCOIN_VALIDATIONINTERFACE_H
88
#define BITCOIN_VALIDATIONINTERFACE_H
99

10+
#include "optional.h"
11+
#include "sapling/incrementalmerkletree.hpp"
12+
1013
#include <boost/signals2/signal.hpp>
1114
#include <boost/shared_ptr.hpp>
1215

@@ -33,6 +36,7 @@ class CValidationInterface {
3336
protected:
3437
virtual void UpdatedBlockTip(const CBlockIndex *pindexNew, const CBlockIndex *pindexFork, bool fInitialDownload) {}
3538
virtual void SyncTransaction(const CTransaction &tx, const CBlockIndex *pindex, int posInBlock) {}
39+
virtual void ChainTip(const CBlockIndex *pindex, const CBlock *pblock, Optional<SaplingMerkleTree> added) {}
3640
virtual void NotifyTransactionLock(const CTransaction &tx) {}
3741
virtual void SetBestChain(const CBlockLocator &locator) {}
3842
virtual bool UpdatedTransaction(const uint256 &hash) { return false;}
@@ -64,6 +68,9 @@ struct CMainSignals {
6468
boost::signals2::signal<void (const CBlock&, const CValidationState&)> BlockChecked;
6569
/** Notifies listeners that a block has been successfully mined */
6670
boost::signals2::signal<void (const uint256 &)> BlockFound;
71+
72+
/** Notifies listeners of a change to the tip of the active block chain. */
73+
boost::signals2::signal<void (const CBlockIndex *, const CBlock *, Optional<SaplingMerkleTree>)> ChainTip;
6774
};
6875

6976
CMainSignals& GetMainSignals();

0 commit comments

Comments
 (0)