in diskio/diskdb.go [87:105]
func (diskdb *diskKVStore) Visit(visitor func(key string, val []byte) error) error {
diskdb.mux.RLock()
defer diskdb.mux.RUnlock()
cancel := make(chan struct{})
defer close(cancel)
for key := range diskdb.db.Keys(cancel) {
val, err := diskdb.db.Read(key)
if err != nil {
return err
}
if err := visitor(key, val); err != nil {
return err
}
}
return nil
}