nodemgr: save and load nm.nextUpdates
This commit is contained in:
parent
385b5df6c8
commit
85631bd0b9
2 changed files with 26 additions and 0 deletions
|
@ -63,6 +63,9 @@ func New() (*ClaimTrie, error) {
|
|||
tr: tr,
|
||||
|
||||
cleanup: func() error {
|
||||
if err := nm.Save(); err != nil {
|
||||
return errors.Wrapf(err, "nm.Save()")
|
||||
}
|
||||
if err := cm.Save(); err != nil {
|
||||
return errors.Wrapf(err, "cm.Save()")
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package nodemgr
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
"fmt"
|
||||
"sort"
|
||||
|
||||
|
@ -39,6 +41,27 @@ func (nm *NodeMgr) Load(ht claim.Height) {
|
|||
name := string(iter.Key())
|
||||
nm.cache[name] = nm.load(name, ht)
|
||||
}
|
||||
data, err := nm.db.Get([]byte("nextUpdates"), nil)
|
||||
if err == leveldb.ErrNotFound {
|
||||
return
|
||||
} else if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
if err = gob.NewDecoder(bytes.NewBuffer(data)).Decode(&nm.nextUpdates); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
// Save saves the states to the database.
|
||||
func (nm *NodeMgr) Save() error {
|
||||
buf := bytes.NewBuffer(nil)
|
||||
if err := gob.NewEncoder(buf).Encode(nm.nextUpdates); err != nil {
|
||||
return errors.Wrapf(err, "gob.Encode()")
|
||||
}
|
||||
if err := nm.db.Put([]byte("nextUpdates"), buf.Bytes(), nil); err != nil {
|
||||
return errors.Wrapf(err, "db.Put()")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Get returns the latest node with name specified by key.
|
||||
|
|
Loading…
Add table
Reference in a new issue