use of com.facebook.cache.common.CacheKey in project fresco by facebook.
the class DiskStorageCacheTest method testInsertionInIndex.
@Test
public void testInsertionInIndex() throws Exception {
CacheKey key = putOneThingInCache();
assertTrue(mCache.hasKeySync(key));
assertTrue(mCache.hasKey(key));
}
use of com.facebook.cache.common.CacheKey in project fresco by facebook.
the class DiskStorageCacheTest method testCleanOldCacheNoEntriesRemaining.
@Test
public void testCleanOldCacheNoEntriesRemaining() throws IOException {
long cacheExpirationMs = TimeUnit.DAYS.toMillis(5);
CacheKey key1 = new SimpleCacheKey("aaa");
byte[] value1 = new byte[41];
mCache.insert(key1, WriterCallbacks.from(value1));
CacheKey key2 = new SimpleCacheKey("bbb");
byte[] value2 = new byte[42];
mCache.insert(key2, WriterCallbacks.from(value2));
// Increment clock by default expiration time + 1 day
when(mClock.now()).thenReturn(cacheExpirationMs + TimeUnit.DAYS.toMillis(1));
long oldestEntry = mCache.clearOldEntries(cacheExpirationMs);
assertEquals(0L, oldestEntry);
}
use of com.facebook.cache.common.CacheKey in project fresco by facebook.
the class BaseFrescoStethoPlugin method memcache.
private void memcache(PrintStream writer, List<String> args) throws DumpException {
CountingMemoryCacheInspector.DumpInfo<CacheKey, CloseableImage> dumpInfo = mBitmapMemoryCacheInspector.dumpCacheContent();
try {
writer.println(mBitmapMemoryCacheInspector.getClass().getSimpleName());
writer.println();
writer.println("Params:");
writer.println(formatStrLocaleSafe("Max size: %7.2fMB", dumpInfo.maxSize / (1024.0 * KB)));
writer.println(formatStrLocaleSafe("Max entries count: %9d", dumpInfo.maxEntriesCount));
writer.println(formatStrLocaleSafe("Max entry size: %7.2fMB", dumpInfo.maxEntrySize / (1024.0 * KB)));
writer.println();
writer.println("Summary of current content:");
writer.println(formatStrLocaleSafe("Total size: %7.2fMB (includes in-use content)", dumpInfo.size / (1024.0 * KB)));
writer.println(formatStrLocaleSafe("Entries count: %9d", dumpInfo.lruEntries.size() + dumpInfo.sharedEntries.size()));
writer.println(formatStrLocaleSafe("LRU size: %7.2fMB", dumpInfo.lruSize / (1024.0 * KB)));
writer.println(formatStrLocaleSafe("LRU count: %9d", dumpInfo.lruEntries.size()));
writer.println(formatStrLocaleSafe("Shared size: %7.2fMB", (dumpInfo.size - dumpInfo.lruSize) / (1024.0 * KB)));
writer.println(formatStrLocaleSafe("Shared count: %9d", dumpInfo.sharedEntries.size()));
writer.println();
writer.println("The cache consists of two parts: Things " + "currently being used and things not.");
writer.println("Those things that are *not* currently being used are in the LRU.");
writer.println("Things currently being used are considered to be shared. They will be added");
writer.println("to the LRU if/when they stop being used.");
writer.println();
writer.println("LRU contents: (things near the top will be evicted first)");
for (CountingMemoryCacheInspector.DumpInfoEntry entry : dumpInfo.lruEntries) {
writeCacheEntry(writer, entry);
}
writer.println();
writer.println("Shared contents:");
for (CountingMemoryCacheInspector.DumpInfoEntry entry : dumpInfo.sharedEntries) {
writeCacheEntry(writer, entry);
}
if (!args.isEmpty() && "-g".equals(args.get(0))) {
getFiles(writer, dumpInfo);
}
} catch (IOException e) {
throw new DumpException(e.getMessage());
} finally {
dumpInfo.release();
}
}
use of com.facebook.cache.common.CacheKey in project fresco by facebook.
the class AnimatedFrameCache method getForReuse.
/**
* Gets the image to be reused, or null if there is no such image.
*
* <p> The returned image is the least recently used image that has no more clients referencing
* it, and it has not yet been evicted from the cache.
*
* <p> The client can freely modify the bitmap of the returned image and can cache it again
* without any restrictions.
*/
@Nullable
public CloseableReference<CloseableImage> getForReuse() {
while (true) {
CacheKey key = popFirstFreeItemKey();
if (key == null) {
return null;
}
CloseableReference<CloseableImage> imageRef = mBackingCache.reuse(key);
if (imageRef != null) {
return imageRef;
}
}
}
use of com.facebook.cache.common.CacheKey in project fresco by facebook.
the class AnimatedFrameCache method popFirstFreeItemKey.
@Nullable
private synchronized CacheKey popFirstFreeItemKey() {
CacheKey cacheKey = null;
Iterator<CacheKey> iterator = mFreeItemsPool.iterator();
if (iterator.hasNext()) {
cacheKey = iterator.next();
iterator.remove();
}
return cacheKey;
}
Aggregations