mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-09-05 17:05:50 +02:00
multi: implement Consumer
on subsystems
This commit implements `Consumer` on `TxPublisher`, `UtxoSweeper`, `ChainArbitrator` and `ChannelArbitrator`.
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/btcsuite/btcd/chaincfg/chainhash"
|
||||
"github.com/btcsuite/btcd/wire"
|
||||
"github.com/davecgh/go-spew/spew"
|
||||
"github.com/lightningnetwork/lnd/chainio"
|
||||
"github.com/lightningnetwork/lnd/chainntnfs"
|
||||
"github.com/lightningnetwork/lnd/fn/v2"
|
||||
"github.com/lightningnetwork/lnd/input"
|
||||
@@ -308,6 +309,10 @@ type UtxoSweeper struct {
|
||||
started uint32 // To be used atomically.
|
||||
stopped uint32 // To be used atomically.
|
||||
|
||||
// Embed the blockbeat consumer struct to get access to the method
|
||||
// `NotifyBlockProcessed` and the `BlockbeatChan`.
|
||||
chainio.BeatConsumer
|
||||
|
||||
cfg *UtxoSweeperConfig
|
||||
|
||||
newInputs chan *sweepInputMessage
|
||||
@@ -342,6 +347,9 @@ type UtxoSweeper struct {
|
||||
bumpRespChan chan *bumpResp
|
||||
}
|
||||
|
||||
// Compile-time check for the chainio.Consumer interface.
|
||||
var _ chainio.Consumer = (*UtxoSweeper)(nil)
|
||||
|
||||
// UtxoSweeperConfig contains dependencies of UtxoSweeper.
|
||||
type UtxoSweeperConfig struct {
|
||||
// GenSweepScript generates a P2WKH script belonging to the wallet where
|
||||
@@ -415,7 +423,7 @@ type sweepInputMessage struct {
|
||||
|
||||
// New returns a new Sweeper instance.
|
||||
func New(cfg *UtxoSweeperConfig) *UtxoSweeper {
|
||||
return &UtxoSweeper{
|
||||
s := &UtxoSweeper{
|
||||
cfg: cfg,
|
||||
newInputs: make(chan *sweepInputMessage),
|
||||
spendChan: make(chan *chainntnfs.SpendDetail),
|
||||
@@ -425,6 +433,11 @@ func New(cfg *UtxoSweeperConfig) *UtxoSweeper {
|
||||
inputs: make(InputsMap),
|
||||
bumpRespChan: make(chan *bumpResp, 100),
|
||||
}
|
||||
|
||||
// Mount the block consumer.
|
||||
s.BeatConsumer = chainio.NewBeatConsumer(s.quit, s.Name())
|
||||
|
||||
return s
|
||||
}
|
||||
|
||||
// Start starts the process of constructing and publish sweep txes.
|
||||
@@ -508,6 +521,11 @@ func (s *UtxoSweeper) Stop() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// NOTE: part of the `chainio.Consumer` interface.
|
||||
func (s *UtxoSweeper) Name() string {
|
||||
return "UtxoSweeper"
|
||||
}
|
||||
|
||||
// SweepInput sweeps inputs back into the wallet. The inputs will be batched and
|
||||
// swept after the batch time window ends. A custom fee preference can be
|
||||
// provided to determine what fee rate should be used for the input. Note that
|
||||
|
Reference in New Issue
Block a user