/* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ package com.facebook.imagepipeline.cache; import com.facebook.cache.common.CacheKey; import com.facebook.common.internal.Supplier; import com.facebook.common.memory.MemoryTrimmableRegistry; import com.facebook.imagepipeline.memory.PooledByteBuffer; public class EncodedCountingMemoryCacheFactory { public static CountingMemoryCache<CacheKey, PooledByteBuffer> get( Supplier<MemoryCacheParams> encodedMemoryCacheParamsSupplier, MemoryTrimmableRegistry memoryTrimmableRegistry) { ValueDescriptor<PooledByteBuffer> valueDescriptor = new ValueDescriptor<PooledByteBuffer>() { @Override public int getSizeInBytes(PooledByteBuffer value) { return value.size(); } }; CountingMemoryCache.CacheTrimStrategy trimStrategy = new NativeMemoryCacheTrimStrategy(); CountingMemoryCache<CacheKey, PooledByteBuffer> countingCache = new CountingMemoryCache<>(valueDescriptor, trimStrategy, encodedMemoryCacheParamsSupplier); memoryTrimmableRegistry.registerMemoryTrimmable(countingCache); return countingCache; } }