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