chainntnfs: notify BlockHeight in Updates event
Enhance the ConfirmationEvent's Updates channel by including the BlockHeight alongside NumConfsLeft. Signed-off-by: Nishant Bansal <nishant.bansal.282003@gmail.com>
This commit is contained in:
3 files changed
+87
-64
No files matched your search
+28
-12
@@ -947,8 +947,12 @@ func (n *TxNotifier) dispatchConfDetails(
|
||||
|
||||
// We'll send a 0 value to the Updates channel,
|
||||
// indicating that the transaction/output script has already
|
||||
// been confirmed.
|
||||
err := n.notifyNumConfsLeft(ntfn, 0)
|
||||
// been confirmed, and include the block height at which the
|
||||
// transaction was included.
|
||||
err := n.notifyNumConfsLeft(ntfn, TxUpdateInfo{
|
||||
NumConfsLeft: 0,
|
||||
BlockHeight: details.BlockHeight,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -977,7 +981,10 @@ func (n *TxNotifier) dispatchConfDetails(
|
||||
// confirmations are left for the transaction/output script to
|
||||
// be confirmed.
|
||||
numConfsLeft := confHeight - n.currentHeight
|
||||
err := n.notifyNumConfsLeft(ntfn, numConfsLeft)
|
||||
err := n.notifyNumConfsLeft(ntfn, TxUpdateInfo{
|
||||
NumConfsLeft: numConfsLeft,
|
||||
BlockHeight: details.BlockHeight,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -1731,7 +1738,10 @@ func (n *TxNotifier) NotifyHeight(height uint32) error {
|
||||
for confRequest := range confRequests {
|
||||
confSet := n.confNotifications[confRequest]
|
||||
for _, ntfn := range confSet.ntfns {
|
||||
txConfHeight := confSet.details.BlockHeight +
|
||||
// blockHeight is the height of the block which
|
||||
// contains the transaction.
|
||||
blockHeight := confSet.details.BlockHeight
|
||||
txConfHeight := blockHeight +
|
||||
ntfn.NumConfirmations - 1
|
||||
numConfsLeft := txConfHeight - height
|
||||
|
||||
@@ -1744,7 +1754,10 @@ func (n *TxNotifier) NotifyHeight(height uint32) error {
|
||||
continue
|
||||
}
|
||||
|
||||
err := n.notifyNumConfsLeft(ntfn, numConfsLeft)
|
||||
err := n.notifyNumConfsLeft(ntfn, TxUpdateInfo{
|
||||
NumConfsLeft: numConfsLeft,
|
||||
BlockHeight: blockHeight,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -2113,25 +2126,28 @@ func (n *TxNotifier) TearDown() {
|
||||
}
|
||||
|
||||
// notifyNumConfsLeft sends the number of confirmations left to the
|
||||
// notification subscriber through the Event.Updates channel.
|
||||
// notification subscriber through the Event.Updates channel, along with the
|
||||
// block height in which the transaction was included.
|
||||
//
|
||||
// NOTE: must be used with the TxNotifier's lock held.
|
||||
func (n *TxNotifier) notifyNumConfsLeft(ntfn *ConfNtfn, num uint32) error {
|
||||
func (n *TxNotifier) notifyNumConfsLeft(ntfn *ConfNtfn,
|
||||
info TxUpdateInfo) error {
|
||||
|
||||
// If the number left is no less than the recorded value, we can skip
|
||||
// sending it as it means this same value has already been sent before.
|
||||
if num >= ntfn.numConfsLeft {
|
||||
if info.NumConfsLeft >= ntfn.numConfsLeft {
|
||||
Log.Debugf("Skipped dispatched update (numConfsLeft=%v) for "+
|
||||
"request %v conf_id=%v", num, ntfn.ConfRequest,
|
||||
ntfn.ConfID)
|
||||
"request %v conf_id=%v", info.NumConfsLeft,
|
||||
ntfn.ConfRequest, ntfn.ConfID)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// Update the number of confirmations left to the notification.
|
||||
ntfn.numConfsLeft = num
|
||||
ntfn.numConfsLeft = info.NumConfsLeft
|
||||
|
||||
select {
|
||||
case ntfn.Event.Updates <- num:
|
||||
case ntfn.Event.Updates <- info:
|
||||
case <-n.quit:
|
||||
return ErrTxNotifierExiting
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user