/*
 * 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 java.util.Map;

import com.google.common.collect.Maps;

/**
 * Helper class to get pool stats
*/
public class PoolStats<V> {
  public BasePool<V> mPool;

  public int mUsedBytes;
  public int mUsedCount;
  public int mFreeBytes;
  public int mFreeCount;

  Map<Integer, IntPair> mBucketStats;

  public PoolStats(BasePool<V> pool) {
    mPool = pool;
    mBucketStats = Maps.newHashMap();
  }

  public void setPool(BasePool<V> pool) {
    mPool = pool;
  }

  /**
   * Refresh all pool stats
   */
  public void refresh() {
    refreshBasic();
    refreshBucketStats();
  }

  public void refreshBasic() {
    mUsedBytes = mPool.mUsed.mNumBytes;
    mUsedCount = mPool.mUsed.mCount;
    mFreeBytes = mPool.mFree.mNumBytes;
    mFreeCount = mPool.mFree.mCount;
  }

  public void refreshBucketStats() {
    mBucketStats.clear();
    for (int i = 0; i < mPool.mBuckets.size(); ++i) {
      final int bucketedSize = mPool.mBuckets.keyAt(i);
      final Bucket<V> bucket = mPool.mBuckets.valueAt(i);
      mBucketStats.put(bucketedSize, new IntPair(bucket.getInUseCount(), bucket.getFreeListSize()));
    }
  }
}

/*
 * 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 java.util.HashMap;
import java.util.Map;

/**
 * Helper class to get pool stats
*/
public class PoolStats<V> {
  public BasePool<V> mPool;

  public int mUsedBytes;
  public int mUsedCount;
  public int mFreeBytes;
  public int mFreeCount;

  Map<Integer, IntPair> mBucketStats;

  public PoolStats(BasePool<V> pool) {
    mPool = pool;
    mBucketStats = new HashMap<>();
  }

  public void setPool(BasePool<V> pool) {
    mPool = pool;
  }

  /**
   * Refresh all pool stats
   */
  public void refresh() {
    refreshBasic();
    refreshBucketStats();
  }

  public void refreshBasic() {
    mUsedBytes = mPool.mUsed.mNumBytes;
    mUsedCount = mPool.mUsed.mCount;
    mFreeBytes = mPool.mFree.mNumBytes;
    mFreeCount = mPool.mFree.mCount;
  }

  public void refreshBucketStats() {
    mBucketStats.clear();
    for (int i = 0; i < mPool.mBuckets.size(); ++i) {
      final int bucketedSize = mPool.mBuckets.keyAt(i);
      final Bucket<V> bucket = mPool.mBuckets.valueAt(i);
      mBucketStats.put(bucketedSize, new IntPair(bucket.getInUseCount(), bucket.getFreeListSize()));
    }
  }
}

Remove calls to Maps.newHashMap from