mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-07-12 14:12:27 +02:00
multi: thread thru the AuxLeafStore everywhere
This commit is contained in:
@ -105,7 +105,7 @@ type DatabaseBuilder interface {
|
||||
type WalletConfigBuilder interface {
|
||||
// BuildWalletConfig is responsible for creating or unlocking and then
|
||||
// fully initializing a wallet.
|
||||
BuildWalletConfig(context.Context, *DatabaseInstances,
|
||||
BuildWalletConfig(context.Context, *DatabaseInstances, *AuxComponents,
|
||||
*rpcperms.InterceptorChain,
|
||||
[]*ListenerWithSignal) (*chainreg.PartialChainControl,
|
||||
*btcwallet.Config, func(), error)
|
||||
@ -120,14 +120,6 @@ type ChainControlBuilder interface {
|
||||
*btcwallet.Config) (*chainreg.ChainControl, func(), error)
|
||||
}
|
||||
|
||||
// AuxComponents is a set of auxiliary components that can be used by lnd for
|
||||
// certain custom channel types.
|
||||
type AuxComponents struct {
|
||||
// MsgRouter is an optional message router that if set will be used in
|
||||
// place of a new blank default message router.
|
||||
MsgRouter fn.Option[msgmux.Router]
|
||||
}
|
||||
|
||||
// ImplementationCfg is a struct that holds all configuration items for
|
||||
// components that can be implemented outside lnd itself.
|
||||
type ImplementationCfg struct {
|
||||
@ -160,6 +152,18 @@ type ImplementationCfg struct {
|
||||
AuxComponents
|
||||
}
|
||||
|
||||
// AuxComponents is a set of auxiliary components that can be used by lnd for
|
||||
// certain custom channel types.
|
||||
type AuxComponents struct {
|
||||
// AuxLeafStore is an optional data source that can be used by custom
|
||||
// channels to fetch+store various data.
|
||||
AuxLeafStore fn.Option[lnwallet.AuxLeafStore]
|
||||
|
||||
// MsgRouter is an optional message router that if set will be used in
|
||||
// place of a new blank default message router.
|
||||
MsgRouter fn.Option[msgmux.Router]
|
||||
}
|
||||
|
||||
// DefaultWalletImpl is the default implementation of our normal, btcwallet
|
||||
// backed configuration.
|
||||
type DefaultWalletImpl struct {
|
||||
@ -242,7 +246,8 @@ func (d *DefaultWalletImpl) Permissions() map[string][]bakery.Op {
|
||||
//
|
||||
// NOTE: This is part of the WalletConfigBuilder interface.
|
||||
func (d *DefaultWalletImpl) BuildWalletConfig(ctx context.Context,
|
||||
dbs *DatabaseInstances, interceptorChain *rpcperms.InterceptorChain,
|
||||
dbs *DatabaseInstances, aux *AuxComponents,
|
||||
interceptorChain *rpcperms.InterceptorChain,
|
||||
grpcListeners []*ListenerWithSignal) (*chainreg.PartialChainControl,
|
||||
*btcwallet.Config, func(), error) {
|
||||
|
||||
@ -562,6 +567,7 @@ func (d *DefaultWalletImpl) BuildWalletConfig(ctx context.Context,
|
||||
HeightHintDB: dbs.HeightHintDB,
|
||||
ChanStateDB: dbs.ChanStateDB.ChannelStateDB(),
|
||||
NeutrinoCS: neutrinoCS,
|
||||
AuxLeafStore: aux.AuxLeafStore,
|
||||
ActiveNetParams: d.cfg.ActiveNetParams,
|
||||
FeeURL: d.cfg.FeeURL,
|
||||
Fee: &lncfg.Fee{
|
||||
@ -625,8 +631,9 @@ func (d *DefaultWalletImpl) BuildWalletConfig(ctx context.Context,
|
||||
|
||||
// proxyBlockEpoch proxies a block epoch subsections to the underlying neutrino
|
||||
// rebroadcaster client.
|
||||
func proxyBlockEpoch(notifier chainntnfs.ChainNotifier,
|
||||
) func() (*blockntfns.Subscription, error) {
|
||||
func proxyBlockEpoch(
|
||||
notifier chainntnfs.ChainNotifier) func() (*blockntfns.Subscription,
|
||||
error) {
|
||||
|
||||
return func() (*blockntfns.Subscription, error) {
|
||||
blockEpoch, err := notifier.RegisterBlockEpochNtfn(
|
||||
@ -717,6 +724,7 @@ func (d *DefaultWalletImpl) BuildChainControl(
|
||||
ChainIO: walletController,
|
||||
NetParams: *walletConfig.NetParams,
|
||||
CoinSelectionStrategy: walletConfig.CoinSelectionStrategy,
|
||||
AuxLeafStore: partialChainControl.Cfg.AuxLeafStore,
|
||||
}
|
||||
|
||||
// The broadcast is already always active for neutrino nodes, so we
|
||||
@ -899,6 +907,10 @@ type DatabaseInstances struct {
|
||||
// for native SQL queries for tables that already support it. This may
|
||||
// be nil if the use-native-sql flag was not set.
|
||||
NativeSQLStore *sqldb.BaseDB
|
||||
|
||||
// AuxLeafStore is an optional data source that can be used by custom
|
||||
// channels to fetch+store various data.
|
||||
AuxLeafStore fn.Option[lnwallet.AuxLeafStore]
|
||||
}
|
||||
|
||||
// DefaultDatabaseBuilder is a type that builds the default database backends
|
||||
|
Reference in New Issue
Block a user