github.com/status-im/status-go@v1.1.0/account/accounts_geth.go (about)

     1  package account
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/ethereum/go-ethereum/accounts"
     7  
     8  	"github.com/status-im/status-go/account/generator"
     9  	"github.com/status-im/status-go/rpc"
    10  )
    11  
    12  // GethManager represents account manager interface.
    13  type GethManager struct {
    14  	*DefaultManager
    15  
    16  	gethAccManager *accounts.Manager
    17  }
    18  
    19  // NewGethManager returns new node account manager.
    20  func NewGethManager() *GethManager {
    21  	m := &GethManager{}
    22  	m.DefaultManager = &DefaultManager{accountsGenerator: generator.New(m)}
    23  	return m
    24  }
    25  
    26  func (m *GethManager) SetRPCClient(rpcClient *rpc.Client, rpcTimeout time.Duration) {
    27  	m.DefaultManager.rpcClient = rpcClient
    28  	m.DefaultManager.rpcTimeout = rpcTimeout
    29  }
    30  
    31  // InitKeystore sets key manager and key store.
    32  func (m *GethManager) InitKeystore(keydir string) error {
    33  	m.mu.Lock()
    34  	defer m.mu.Unlock()
    35  
    36  	var err error
    37  	m.gethAccManager, err = makeAccountManager(keydir)
    38  	if err != nil {
    39  		return err
    40  	}
    41  
    42  	m.keystore, err = makeKeyStore(m.gethAccManager)
    43  	m.Keydir = keydir
    44  	return err
    45  }
    46  
    47  func (m *GethManager) GetManager() *accounts.Manager {
    48  	m.mu.RLock()
    49  	defer m.mu.RUnlock()
    50  	return m.gethAccManager
    51  }