Module-HTTPD/src/main/java/dev/plex/cache/FileCache.java

35 lines
986 B
Java

package dev.plex.cache;
import com.google.common.collect.EvictingQueue;
import java.io.File;
import java.io.IOException;
import java.util.Queue;
public class FileCache
{
private final Queue<CacheItem> cache = EvictingQueue.create(15);
public byte[] getFile(File file) throws IOException
{
return getFile(file.getPath());
}
public byte[] getFile(String path) throws IOException
{
CacheItem theItem = cache.stream().filter(cacheItem -> cacheItem.path.equals(path)).findFirst().orElse(null);
if (theItem == null)
{
theItem = new CacheItem(new File(path));
if (theItem.file != null) cache.add(theItem);
}
if (System.currentTimeMillis() - theItem.timestamp > 3 * 60 * 1000) // 3 minutes
{
cache.remove(theItem);
theItem = new CacheItem(new File(path));
if (theItem.file != null) cache.add(theItem);
}
return theItem.file;
}
}