public void put(CacheObject r) { if (r.isStream()) { fifo.put(r); } else if (recentlyUsed.get(r.getPos()) != null) { lru.put(r); } else { fifo.put(r); lastUsed = r.getPos(); } }
public CacheObject get(int pos) { CacheObject r = lru.find(pos); if (r != null) { return r; } r = fifo.find(pos); if (r != null && !r.isStream()) { if (recentlyUsed.get(pos) != null) { if (lastUsed != pos) { fifo.remove(pos); lru.put(r); } } else { recentlyUsed.put(pos, this); } lastUsed = pos; } return r; }