void encode(DiskCacheProvider diskCacheProvider, Options options) { GlideTrace.beginSection("DecodeJob.encode"); try { diskCacheProvider.getDiskCache().put(key, new DataCacheWriter<>(encoder, toEncode, options)); } finally { toEncode.unlock(); GlideTrace.endSection(); } }
private void cacheData(Object dataToCache) { long startTime = LogTime.getLogTime(); try { Encoder<Object> encoder = helper.getSourceEncoder(dataToCache); DataCacheWriter<Object> writer = new DataCacheWriter<>(encoder, dataToCache, helper.getOptions()); originalKey = new DataCacheKey(loadData.sourceKey, helper.getSignature()); helper.getDiskCache().put(originalKey, writer); if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "Finished encoding source to cache" + ", key: " + originalKey + ", data: " + dataToCache + ", encoder: " + encoder + ", duration: " + LogTime.getElapsedMillis(startTime)); } } finally { loadData.fetcher.cleanup(); } sourceCacheGenerator = new DataCacheGenerator(Collections.singletonList(loadData.sourceKey), helper, this); }
@Test public void testEditIsAbortedIfWriterThrows() throws IOException { try { cache.put(key, new DiskCache.Writer() { @Override public boolean write(@NonNull File file) { throw new RuntimeException("test"); } }); } catch (RuntimeException e) { // Expected. } cache.put(key, new DiskCache.Writer() { @Override public boolean write(@NonNull File file) { try { Util.writeFile(file, data); } catch (IOException e) { fail(e.toString()); } return true; } }); byte[] received = Util.readFile(cache.get(key), data.length); assertArrayEquals(data, received); }
@Test public void testDoesNotCommitIfWriterReturnsFalse() { cache.put(key, new DiskCache.Writer() { @Override public boolean write(@NonNull File file) { return false; } }); assertNull(cache.get(key)); }
@Test public void testDoesNotCommitIfWriterWritesButReturnsFalse() { cache.put(key, new DiskCache.Writer() { @Override public boolean write(@NonNull File file) { try { Util.writeFile(file, data); } catch (IOException e) { fail(e.toString()); } return false; } }); assertNull(cache.get(key)); }
@Test public void testCanInsertAndGet() throws IOException { cache.put(key, new DiskCache.Writer() { @Override public boolean write(@NonNull File file) { try { Util.writeFile(file, data); } catch (IOException e) { fail(e.toString()); } return true; } }); byte[] received = Util.readFile(cache.get(key), data.length); assertArrayEquals(data, received); }
private void writeTransformedToCache(Resource<T> transformed) { if (transformed == null || !diskCacheStrategy.cacheResult()) { return; } long startTime = LogTime.getLogTime(); SourceWriter<Resource<T>> writer = new SourceWriter<Resource<T>>(loadProvider.getEncoder(), transformed); diskCacheProvider.getDiskCache().put(resultKey, writer); if (Log.isLoggable(TAG, Log.VERBOSE)) { logWithTimeAndKey("Wrote transformed from source to cache", startTime); } }
private Resource<T> cacheAndDecodeSourceData(A data) throws IOException { long startTime = LogTime.getLogTime(); SourceWriter<A> writer = new SourceWriter<A>(loadProvider.getSourceEncoder(), data); diskCacheProvider.getDiskCache().put(resultKey.getOriginalKey(), writer); if (Log.isLoggable(TAG, Log.VERBOSE)) { logWithTimeAndKey("Wrote source to cache", startTime); } startTime = LogTime.getLogTime(); Resource<T> result = loadFromCache(resultKey.getOriginalKey()); if (Log.isLoggable(TAG, Log.VERBOSE) && result != null) { logWithTimeAndKey("Decoded source from cache", startTime); } return result; }
void encode(DiskCacheProvider diskCacheProvider, Options options) { TraceCompat.beginSection("DecodeJob.encode"); try { diskCacheProvider.getDiskCache().put(key, new DataCacheWriter<>(encoder, toEncode, options)); } finally { toEncode.unlock(); TraceCompat.endSection(); } }
private void cacheData(Object dataToCache) { long startTime = LogTime.getLogTime(); try { Encoder<Object> encoder = helper.getSourceEncoder(dataToCache); DataCacheWriter<Object> writer = new DataCacheWriter<>(encoder, dataToCache, helper.getOptions()); originalKey = new DataCacheKey(loadData.sourceKey, helper.getSignature()); helper.getDiskCache().put(originalKey, writer); if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "Finished encoding source to cache" + ", key: " + originalKey + ", data: " + dataToCache + ", encoder: " + encoder + ", duration: " + LogTime.getElapsedMillis(startTime)); } } finally { loadData.fetcher.cleanup(); } sourceCacheGenerator = new DataCacheGenerator(Collections.singletonList(loadData.sourceKey), helper, this); }