in imagepipeline/src/main/java/com/facebook/imagepipeline/producers/PartialDiskCacheProducer.java [282:315]
public void onNewResultImpl(@Nullable EncodedImage newResult, @Status int status) {
if (isNotLast(status)) {
// TODO 19247361 Consider merging of non-final results
return;
}
if (mPartialEncodedImageFromCache != null
&& newResult != null
&& newResult.getBytesRange() != null) {
try {
final PooledByteBufferOutputStream pooledOutputStream =
merge(mPartialEncodedImageFromCache, newResult);
sendFinalResultToConsumer(pooledOutputStream);
} catch (IOException e) {
// TODO 19247425 Delete cached file and request full image
FLog.e(PRODUCER_NAME, "Error while merging image data", e);
getConsumer().onFailure(e);
} finally {
newResult.close();
mPartialEncodedImageFromCache.close();
}
mDefaultBufferedDiskCache.remove(mPartialImageCacheKey);
} else if (mIsDiskCacheEnabledForWrite
&& statusHasFlag(status, IS_PARTIAL_RESULT)
&& isLast(status)
&& newResult != null
&& newResult.getImageFormat() != ImageFormat.UNKNOWN) {
mDefaultBufferedDiskCache.put(mPartialImageCacheKey, newResult);
getConsumer().onNewResult(newResult, status);
} else {
getConsumer().onNewResult(newResult, status);
}
}