/// <summary>
 /// Instantiates the <see cref="ImagePipelineCore"/>.
 /// </summary>
 /// <param name="producerSequenceFactory">
 /// The factory that creates all producer sequences.
 /// </param>
 /// <param name="requestListeners">
 /// The listeners for the image requests.
 /// </param>
 /// <param name="isPrefetchEnabledSupplier">
 /// The supplier for enabling prefetch.
 /// </param>
 /// <param name="bitmapMemoryCache">
 /// The memory cache for CloseableImage.
 /// </param>
 /// <param name="encodedMemoryCache">
 /// The memory cache for IPooledByteBuffer.
 /// </param>
 /// <param name="mainBufferedDiskCache">
 /// The default buffered disk cache.
 /// </param>
 /// <param name="smallImageBufferedDiskCache">
 /// The buffered disk cache used for small images.
 /// </param>
 /// <param name="cacheKeyFactory">
 /// The factory that creates cache keys for the pipeline.
 /// </param>
 /// <param name="threadHandoffProducerQueue">
 /// Move further computation to different thread.
 /// </param>
 /// <param name="flexByteArrayPool">
 /// The memory pool use for BitmapImage conversion.
 /// </param>
 public ImagePipelineCore(
     ProducerSequenceFactory producerSequenceFactory,
     HashSet <IRequestListener> requestListeners,
     ISupplier <bool> isPrefetchEnabledSupplier,
     IMemoryCache <ICacheKey, CloseableImage> bitmapMemoryCache,
     IMemoryCache <ICacheKey, IPooledByteBuffer> encodedMemoryCache,
     BufferedDiskCache mainBufferedDiskCache,
     BufferedDiskCache smallImageBufferedDiskCache,
     ICacheKeyFactory cacheKeyFactory,
     ThreadHandoffProducerQueue threadHandoffProducerQueue,
     FlexByteArrayPool flexByteArrayPool)
 {
     _idCounter = 0;
     _producerSequenceFactory     = producerSequenceFactory;
     _requestListener             = new ForwardingRequestListener(requestListeners);
     _isPrefetchEnabledSupplier   = isPrefetchEnabledSupplier;
     _bitmapMemoryCache           = bitmapMemoryCache;
     _encodedMemoryCache          = encodedMemoryCache;
     _mainBufferedDiskCache       = mainBufferedDiskCache;
     _smallImageBufferedDiskCache = smallImageBufferedDiskCache;
     _cacheKeyFactory             = cacheKeyFactory;
     _threadHandoffProducerQueue  = threadHandoffProducerQueue;
     _flexByteArrayPool           = flexByteArrayPool;
     _handleResultExecutor        = Executors.NewFixedThreadPool(MAX_DATA_SOURCE_SUBSCRIBERS);
 }
Exemple #2
0
        private ProducerSequenceFactory GetProducerSequenceFactory()
        {
            if (_producerSequenceFactory == null)
            {
                _producerSequenceFactory =
                    new ProducerSequenceFactory(
                        GetProducerFactory(),
                        _config.NetworkFetcher,
                        _config.IsResizeAndRotateEnabledForNetwork,
                        _config.IsDownsampleEnabled,
                        _config.Experiments.IsWebpSupportEnabled,
                        _threadHandoffProducerQueue,
                        _config.Experiments.ThrottlingMaxSimultaneousRequests,
                        _config.PoolFactory.FlexByteArrayPool);
            }

            return(_producerSequenceFactory);
        }