func()

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
}