in persistence/disk.go [63:88]
func (v *diskValue) load(obj interface{}) error {
// First try loading from memory.
err := v.memValue.Load(obj)
if err == nil {
return nil
}
if err != ErrNotFound {
return err
}
// If there exists no value, load from disk.
// If the value is restored from disk, store it to memory as well.
jsontext, err := v.loadBytes(v.name)
if err != nil {
return err
}
if len(jsontext) == 0 {
return ErrNotFound
}
err = json.Unmarshal(jsontext, obj)
if err != nil {
return err
}
v.memValue.Store(obj)
return nil
}