package jodd.cache;
import java.io.File;
/**
* Cache of recently used files.
*/
public class FileLRUCache extends FileCache {
/**
* Creates file LRU cache with specified size. Sets
* {@link #maxFileSize max available file size} to half of this value.
*/
public FileLRUCache(int maxSize) {
this(maxSize, maxSize / 2, 0);
}
public FileLRUCache(int maxSize, int maxFileSize) {
this(maxSize, maxFileSize, 0);
}
/**
* Creates new File LRU cache.
* @param maxSize total cache size in bytes
* @param maxFileSize max available file size in bytes, may be 0
* @param timeout timeout, may be 0
*/
public FileLRUCache(int maxSize, int maxFileSize, long timeout) {
super(maxSize, maxFileSize, timeout);
}
@Override
protected Cache<File, byte[]> createCache() {
return new LRUCache<File, byte[]>(0, timeout) {
@Override
public boolean isFull() {
return usedSize > FileLRUCache.this.maxSize;
}
@Override
protected boolean isReallyFull(File file) {
return isFull();
}
@Override
protected void onRemove(File key, byte[] cachedObject) {
usedSize -= cachedObject.length;
}
};
}
}