github.com/decred/dcrlnd@v0.7.6/lnwallet/remotedcrwallet/driver.go (about) 1 package remotedcrwallet 2 3 import ( 4 "fmt" 5 6 "github.com/decred/dcrlnd/lnwallet" 7 ) 8 9 const ( 10 walletType = "remotedcrwallet" 11 ) 12 13 var ( 14 // We currently only support full chain sync (no spv), so hardcode 15 // the available backends. 16 availableBackends = []string{"dcrd", "spv"} 17 ) 18 19 // createNewWallet creates a new instance of DcrWallet given the proper list of 20 // initialization parameters. This function is the factory function required to 21 // properly create an instance of the lnwallet.WalletDriver struct for 22 // DcrWallet. 23 func createNewWallet(args ...interface{}) (lnwallet.WalletController, error) { 24 if len(args) != 1 { 25 return nil, fmt.Errorf("incorrect number of arguments to .New(...), "+ 26 "expected 1, instead passed %v", len(args)) 27 } 28 29 config, ok := args[0].(*Config) 30 if !ok { 31 return nil, fmt.Errorf("first argument to remotedcrwallet.New " + 32 "is incorrect, expected a *remotedcrwallet.Config") 33 } 34 35 return New(*config) 36 } 37 38 // init registers a driver for the DcrWallet concrete implementation of the 39 // lnwallet.WalletController interface. 40 func init() { 41 // Register the driver. 42 driver := &lnwallet.WalletDriver{ 43 WalletType: walletType, 44 New: createNewWallet, 45 BackEnds: func() []string { return availableBackends }, 46 } 47 48 if err := lnwallet.RegisterWallet(driver); err != nil { 49 panic(fmt.Sprintf("failed to register wallet driver '%s': %v", 50 walletType, err)) 51 } 52 }