mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-01-19 05:45:21 +01:00
55 lines
1.4 KiB
Go
55 lines
1.4 KiB
Go
|
package chainio
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
|
||
|
"github.com/btcsuite/btclog/v2"
|
||
|
"github.com/lightningnetwork/lnd/chainntnfs"
|
||
|
)
|
||
|
|
||
|
// Beat implements the Blockbeat interface. It contains the block epoch and a
|
||
|
// customized logger.
|
||
|
//
|
||
|
// TODO(yy): extend this to check for confirmation status - which serves as the
|
||
|
// single source of truth, to avoid the potential race between receiving blocks
|
||
|
// and `GetTransactionDetails/RegisterSpendNtfn/RegisterConfirmationsNtfn`.
|
||
|
type Beat struct {
|
||
|
// epoch is the current block epoch the blockbeat is aware of.
|
||
|
epoch chainntnfs.BlockEpoch
|
||
|
|
||
|
// log is the customized logger for the blockbeat which prints the
|
||
|
// block height.
|
||
|
log btclog.Logger
|
||
|
}
|
||
|
|
||
|
// Compile-time check to ensure Beat satisfies the Blockbeat interface.
|
||
|
var _ Blockbeat = (*Beat)(nil)
|
||
|
|
||
|
// NewBeat creates a new beat with the specified block epoch and a customized
|
||
|
// logger.
|
||
|
func NewBeat(epoch chainntnfs.BlockEpoch) *Beat {
|
||
|
b := &Beat{
|
||
|
epoch: epoch,
|
||
|
}
|
||
|
|
||
|
// Create a customized logger for the blockbeat.
|
||
|
logPrefix := fmt.Sprintf("Height[%6d]:", b.Height())
|
||
|
b.log = clog.WithPrefix(logPrefix)
|
||
|
|
||
|
return b
|
||
|
}
|
||
|
|
||
|
// Height returns the height of the block epoch.
|
||
|
//
|
||
|
// NOTE: Part of the Blockbeat interface.
|
||
|
func (b *Beat) Height() int32 {
|
||
|
return b.epoch.Height
|
||
|
}
|
||
|
|
||
|
// logger returns the logger for the blockbeat.
|
||
|
//
|
||
|
// NOTE: Part of the private blockbeat interface.
|
||
|
func (b *Beat) logger() btclog.Logger {
|
||
|
return b.log
|
||
|
}
|