/* * 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.memory; import com.facebook.common.internal.Preconditions; import com.facebook.common.memory.MemoryTrimmableRegistry; import com.facebook.common.memory.NoOpMemoryTrimmableRegistry; /** * Configuration class for pools. */ public class PoolConfig { // There are a lot of parameters in this class. Please follow strict alphabetical order. private final PoolParams mBitmapPoolParams; private final PoolStatsTracker mBitmapPoolStatsTracker; private final PoolParams mCommonByteArrayPoolParams; private final PoolStatsTracker mCommonByteArrayPoolStatsTracker; private final MemoryTrimmableRegistry mMemoryTrimmableRegistry; private final PoolParams mNativeMemoryChunkPoolParams; private final PoolStatsTracker mNativeMemoryChunkPoolStatsTracker; private final PoolParams mSingleByteArrayPoolParams; private final SingleByteArrayPoolStatsTracker mSingleByteArrayPoolStatsTracker; private PoolConfig(Builder builder) { mBitmapPoolParams = builder.mBitmapPoolParams == null ? DefaultBitmapPoolParams.get() : builder.mBitmapPoolParams; mBitmapPoolStatsTracker = builder.mBitmapPoolStatsTracker == null ? NoOpPoolStatsTracker.getInstance() : builder.mBitmapPoolStatsTracker; mCommonByteArrayPoolParams = builder.mCommonByteArrayPoolParams == null ? DefaultByteArrayPoolParams.get() : builder.mCommonByteArrayPoolParams; mCommonByteArrayPoolStatsTracker = builder.mCommonByteArrayPoolStatsTracker == null ? NoOpPoolStatsTracker.getInstance() : builder.mCommonByteArrayPoolStatsTracker; mMemoryTrimmableRegistry = builder.mMemoryTrimmableRegistry == null ? NoOpMemoryTrimmableRegistry.getInstance() : builder.mMemoryTrimmableRegistry; mNativeMemoryChunkPoolParams = builder.mNativeMemoryChunkPoolParams == null ? DefaultNativeMemoryChunkPoolParams.get() : builder.mNativeMemoryChunkPoolParams; mNativeMemoryChunkPoolStatsTracker = builder.mNativeMemoryChunkPoolStatsTracker == null ? NoOpPoolStatsTracker.getInstance() : builder.mNativeMemoryChunkPoolStatsTracker; mSingleByteArrayPoolParams = builder.mSingleByteArrayPoolParams == null ? DefaultSingleByteArrayPoolParams.get() : builder.mSingleByteArrayPoolParams; mSingleByteArrayPoolStatsTracker = builder.mSingleByteArrayPoolStatsTracker == null ? NoOpSingleByteArrayPoolStatsTracker.getInstance() : builder.mSingleByteArrayPoolStatsTracker; } public PoolParams getBitmapPoolParams() { return mBitmapPoolParams; } public PoolStatsTracker getBitmapPoolStatsTracker() { return mBitmapPoolStatsTracker; } public PoolParams getCommonByteArrayPoolParams() { return mCommonByteArrayPoolParams; } public PoolStatsTracker getCommonByteArrayPoolStatsTracker() { return mCommonByteArrayPoolStatsTracker; } public MemoryTrimmableRegistry getMemoryTrimmableRegistry() { return mMemoryTrimmableRegistry; } public PoolParams getNativeMemoryChunkPoolParams() { return mNativeMemoryChunkPoolParams; } public PoolStatsTracker getNativeMemoryChunkPoolStatsTracker() { return mNativeMemoryChunkPoolStatsTracker; } public PoolParams getSingleByteArrayPoolParams() { return mSingleByteArrayPoolParams; } public SingleByteArrayPoolStatsTracker getSingleByteArrayPoolStatsTracker() { return mSingleByteArrayPoolStatsTracker; } public static Builder newBuilder() { return new Builder(); } public static class Builder { private PoolParams mBitmapPoolParams; private PoolStatsTracker mBitmapPoolStatsTracker; private PoolParams mCommonByteArrayPoolParams; private PoolStatsTracker mCommonByteArrayPoolStatsTracker; private MemoryTrimmableRegistry mMemoryTrimmableRegistry; private PoolParams mNativeMemoryChunkPoolParams; private PoolStatsTracker mNativeMemoryChunkPoolStatsTracker; private PoolParams mSingleByteArrayPoolParams; private SingleByteArrayPoolStatsTracker mSingleByteArrayPoolStatsTracker; private Builder() { } public Builder setBitmapPoolParams(PoolParams bitmapPoolParams) { mBitmapPoolParams = Preconditions.checkNotNull(bitmapPoolParams); return this; } public Builder setBitmapPoolStatsTracker( PoolStatsTracker bitmapPoolStatsTracker) { mBitmapPoolStatsTracker = Preconditions.checkNotNull(bitmapPoolStatsTracker); return this; } public Builder setCommonByteArrayPoolParams(PoolParams commonByteArrayPoolParams) { mCommonByteArrayPoolParams = Preconditions.checkNotNull(commonByteArrayPoolParams); return this; } public Builder setCommonByteArrayPoolStatsTracker( PoolStatsTracker commonByteArrayPoolStatsTracker) { mCommonByteArrayPoolStatsTracker = Preconditions.checkNotNull(commonByteArrayPoolStatsTracker); return this; } public Builder setMemoryTrimmableRegistry(MemoryTrimmableRegistry memoryTrimmableRegistry) { mMemoryTrimmableRegistry = memoryTrimmableRegistry; return this; } public Builder setNativeMemoryChunkPoolParams(PoolParams nativeMemoryChunkPoolParams) { mNativeMemoryChunkPoolParams = Preconditions.checkNotNull(nativeMemoryChunkPoolParams); return this; } public Builder setNativeMemoryChunkPoolStatsTracker( PoolStatsTracker nativeMemoryChunkPoolStatsTracker) { mNativeMemoryChunkPoolStatsTracker = Preconditions.checkNotNull(nativeMemoryChunkPoolStatsTracker); return this; } public Builder setSingleByteArrayPoolParams(PoolParams singleByteArrayPoolParams) { mSingleByteArrayPoolParams = singleByteArrayPoolParams; return this; } public Builder setSingleByteArrayPoolStatsTracker( SingleByteArrayPoolStatsTracker nativeMemoryChunkPoolStatsTracker) { mSingleByteArrayPoolStatsTracker = Preconditions.checkNotNull(nativeMemoryChunkPoolStatsTracker); return this; } public PoolConfig build() { return new PoolConfig(this); } } }