![JAR search and dependency download from the Maven repository](/logo.png)
com.github.ltsopensource.kv.iterator.MemIteratorImpl Maven / Gradle / Ivy
package com.github.ltsopensource.kv.iterator;
import com.github.ltsopensource.kv.Entry;
import com.github.ltsopensource.kv.cache.DataCache;
import com.github.ltsopensource.kv.data.DataBlockEngine;
import com.github.ltsopensource.kv.index.IndexItem;
import com.github.ltsopensource.kv.index.MemIndex;
import java.util.Iterator;
import java.util.Map;
/**
* @author Robert HG ([email protected]) on 12/18/15.
*/
public class MemIteratorImpl implements DBIterator> {
private Iterator>> iterator;
private DataBlockEngine dataBlockEngine;
private DataCache dataCache;
private MemIndex index;
public MemIteratorImpl(MemIndex index, DataBlockEngine dataBlockEngine, DataCache dataCache) {
this.index = index;
this.dataBlockEngine = dataBlockEngine;
this.dataCache = dataCache;
this.iterator = index.getIndexMap().entrySet().iterator();
}
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Entry next() {
Map.Entry> entry = iterator.next();
IndexItem index = entry.getValue();
// 1. 从缓存中读取
V value = dataCache.get(index.getKey());
if (value != null) {
return new Entry(entry.getKey(), value);
}
// 2. 从文件中读取
value = dataBlockEngine.getValue(index);
if (value == null) {
return null;
}
return new Entry(entry.getKey(), value);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy