/*
* 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, Void> get(
Supplier<MemoryCacheParams> encodedMemoryCacheParamsSupplier,
MemoryTrimmableRegistry memoryTrimmableRegistry) {
MemoryCacheIndex<CacheKey, PooledByteBuffer, Void> memoryCacheIndex =
new SimpleMemoryCacheIndex<CacheKey, PooledByteBuffer>();
CountingMemoryCache.ValueInfoCallback<PooledByteBuffer> valueTypeDescriptor =
new CountingMemoryCache.ValueInfoCallback<PooledByteBuffer>() {
@Override
public long getSizeInBytes(PooledByteBuffer value) {
return value.size();
}
};
CountingMemoryCache.CacheTrimStrategy trimStrategy = new NativeMemoryCacheTrimStrategy();
CountingMemoryCache<CacheKey, PooledByteBuffer, Void> countingCache =
new CountingMemoryCache<CacheKey, PooledByteBuffer, Void>(
memoryCacheIndex,
valueTypeDescriptor,
trimStrategy,
encodedMemoryCacheParamsSupplier);
memoryTrimmableRegistry.registerMemoryTrimmable(countingCache);
return countingCache;
}
}