package com.sleepycat.je.cleaner; import java.util.SortedMap; import java.util.TreeMap; import com.sleepycat.je.dbi.MemoryBudget; import de.ovgu.cide.jakutil.*; /** * A cache of LNInfo by LSN offset. Used to hold a set of LNs that are to be * processed. Keeps track of memory used, and when full (over budget) the next * offset should be queried and removed. */ class LookAheadCache { private SortedMap map; private int maxMem; private int usedMem; LookAheadCache( int lookAheadCacheSize){ map=new TreeMap(); maxMem=lookAheadCacheSize; } boolean isEmpty(){ return map.isEmpty(); } boolean isFull(){ return usedMem >= maxMem; } Long nextOffset(){ return (Long)map.firstKey(); } void add( Long lsnOffset, LNInfo info){ map.put(lsnOffset,info); usedMem++; this.hook166(info); } LNInfo remove( Long offset){ LNInfo info=(LNInfo)map.remove(offset); if (info != null) { this.hook167(info); } return info; } protected void hook166( LNInfo info){ } protected void hook167( LNInfo info){ } }