/// <summary> /// Called when the runnable is cancelled. /// </summary> protected override void OnCancellation() { _producerListener.OnProducerFinishWithCancellation( _requestId, _producerName, _producerListener.RequiresExtraMap(_requestId) ? GetExtraMapOnCancellation() : null); _consumer.OnCancellation(); }
private void OnFinishDiskReads( Task <EncodedImage> task, IConsumer <EncodedImage> consumer, BufferedDiskCache preferredCache, ICacheKey preferredCacheKey, IProducerContext producerContext) { string requestId = producerContext.Id; IProducerListener listener = producerContext.Listener; if (IsTaskCancelled(task)) { listener.OnProducerFinishWithCancellation(requestId, PRODUCER_NAME, null); consumer.OnCancellation(); } else if (task.IsFaulted) { listener.OnProducerFinishWithFailure(requestId, PRODUCER_NAME, task.Exception, null); MaybeStartInputProducer( consumer, new DiskCacheConsumer( _defaultBufferedDiskCache, _smallImageBufferedDiskCache, _chooseCacheByImageSize, _forceSmallCacheThresholdBytes, consumer, preferredCache, preferredCacheKey), producerContext); } else { EncodedImage cachedReference = task.Result; if (cachedReference != null) { listener.OnProducerFinishWithSuccess( requestId, PRODUCER_NAME, GetExtraMap(listener, requestId, true)); consumer.OnProgressUpdate(1); consumer.OnNewResult(cachedReference, true); cachedReference.Dispose(); } else { listener.OnProducerFinishWithSuccess( requestId, PRODUCER_NAME, GetExtraMap(listener, requestId, false)); MaybeStartInputProducer( consumer, new DiskCacheConsumer( _defaultBufferedDiskCache, _smallImageBufferedDiskCache, _chooseCacheByImageSize, _forceSmallCacheThresholdBytes, consumer, preferredCache, preferredCacheKey), producerContext); } } }