Stop/start wallet methods
This commit is contained in:
parent
19487da894
commit
aa1b898fe4
|
@ -84,6 +84,7 @@ type GethStatusBackend struct {
|
||||||
selectedAccountKeyID string
|
selectedAccountKeyID string
|
||||||
log log.Logger
|
log log.Logger
|
||||||
allowAllRPC bool // used only for tests, disables api method restrictions
|
allowAllRPC bool // used only for tests, disables api method restrictions
|
||||||
|
forceStopWallet bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewGethStatusBackend create a new GethStatusBackend instance
|
// NewGethStatusBackend create a new GethStatusBackend instance
|
||||||
|
@ -269,9 +270,6 @@ func (b *GethStatusBackend) startNodeWithKey(acc multiaccounts.Account, password
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := b.startWallet(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
err = b.multiaccountsDB.UpdateAccountTimestamp(acc.KeyUID, time.Now().Unix())
|
err = b.multiaccountsDB.UpdateAccountTimestamp(acc.KeyUID, time.Now().Unix())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -856,7 +854,7 @@ func (b *GethStatusBackend) AppStateChange(state string) {
|
||||||
b.log.Info("App State changed", "new-state", s)
|
b.log.Info("App State changed", "new-state", s)
|
||||||
b.appState = s
|
b.appState = s
|
||||||
|
|
||||||
if s == appStateForeground {
|
if s == appStateForeground && !b.forceStopWallet {
|
||||||
wallet, err := b.statusNode.WalletService()
|
wallet, err := b.statusNode.WalletService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.log.Error("Retrieving of wallet service failed on app state change to active", "error", err)
|
b.log.Error("Retrieving of wallet service failed on app state change to active", "error", err)
|
||||||
|
@ -875,7 +873,7 @@ func (b *GethStatusBackend) AppStateChange(state string) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if s == appStateBackground {
|
} else if s == appStateBackground && !b.forceStopWallet {
|
||||||
wallet, err := b.statusNode.WalletService()
|
wallet, err := b.statusNode.WalletService()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
b.log.Error("Retrieving of wallet service failed on app state change to background", "error", err)
|
b.log.Error("Retrieving of wallet service failed on app state change to background", "error", err)
|
||||||
|
@ -891,6 +889,50 @@ func (b *GethStatusBackend) AppStateChange(state string) {
|
||||||
// and normal mode if the app is in foreground.
|
// and normal mode if the app is in foreground.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *GethStatusBackend) StopWallet() error {
|
||||||
|
wallet, err := b.statusNode.WalletService()
|
||||||
|
if err != nil {
|
||||||
|
b.log.Error("Retrieving of wallet service failed on StopWallet", "error", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if wallet.IsStarted() {
|
||||||
|
err = wallet.Stop()
|
||||||
|
if err != nil {
|
||||||
|
b.log.Error("Wallet service stop failed on StopWallet", "error", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b.forceStopWallet = true
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *GethStatusBackend) StartWallet() error {
|
||||||
|
wallet, err := b.statusNode.WalletService()
|
||||||
|
if err != nil {
|
||||||
|
b.log.Error("Retrieving of wallet service failed on StartWallet", "error", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !wallet.IsStarted() {
|
||||||
|
err = wallet.Start(b.statusNode.Server())
|
||||||
|
if err != nil {
|
||||||
|
b.log.Error("Wallet service start failed on StartWallet", "error", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
err = b.startWallet()
|
||||||
|
if err != nil {
|
||||||
|
b.log.Error("Wallet reactor start failed on StartWallet", "error", err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b.forceStopWallet = false
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// Logout clears whisper identities.
|
// Logout clears whisper identities.
|
||||||
func (b *GethStatusBackend) Logout() error {
|
func (b *GethStatusBackend) Logout() error {
|
||||||
b.mu.Lock()
|
b.mu.Lock()
|
||||||
|
@ -940,9 +982,11 @@ func (b *GethStatusBackend) cleanupServices() error {
|
||||||
switch err {
|
switch err {
|
||||||
case node.ErrServiceUnknown:
|
case node.ErrServiceUnknown:
|
||||||
case nil:
|
case nil:
|
||||||
err = wallet.StopReactor()
|
if wallet.IsStarted() {
|
||||||
if err != nil {
|
err = wallet.Stop()
|
||||||
return err
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
return err
|
return err
|
||||||
|
@ -981,10 +1025,6 @@ func (b *GethStatusBackend) SelectAccount(loginParams account.LoginParams) error
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := b.startWallet(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -624,6 +624,18 @@ func AppStateChange(state string) {
|
||||||
statusBackend.AppStateChange(state)
|
statusBackend.AppStateChange(state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// StopWallet
|
||||||
|
func StopWallet() string {
|
||||||
|
err := statusBackend.StopWallet()
|
||||||
|
return makeJSONResponse(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartWallet
|
||||||
|
func StartWallet() string {
|
||||||
|
err := statusBackend.StartWallet()
|
||||||
|
return makeJSONResponse(err)
|
||||||
|
}
|
||||||
|
|
||||||
// SetMobileSignalHandler setup geth callback to notify about new signal
|
// SetMobileSignalHandler setup geth callback to notify about new signal
|
||||||
// used for gomobile builds
|
// used for gomobile builds
|
||||||
func SetMobileSignalHandler(handler SignalHandler) {
|
func SetMobileSignalHandler(handler SignalHandler) {
|
||||||
|
|
|
@ -64,8 +64,10 @@ func (s *Service) StopReactor() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
s.reactor.Stop()
|
s.reactor.Stop()
|
||||||
s.group.Stop()
|
if s.group != nil {
|
||||||
s.group.Wait()
|
s.group.Stop()
|
||||||
|
s.group.Wait()
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue