19fc12334a7d14347cd6951d0653264b2597bd3a0Sam Juddpackage com.bumptech.glide.load.engine.bitmap_recycle;
2d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd
3e8b5d67302f343bfa262c8c90fda5145813f292aRobert Pappimport com.bumptech.glide.util.Util;
4d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd
5d5ddd93ac507c52f316b094a6740ddb5f122125fSam Juddimport java.util.Queue;
6d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd
7d5ddd93ac507c52f316b094a6740ddb5f122125fSam Juddabstract class BaseKeyPool<T extends Poolable> {
8d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd    private static final int MAX_SIZE = 20;
9e8b5d67302f343bfa262c8c90fda5145813f292aRobert Papp    private final Queue<T> keyPool = Util.createQueue(MAX_SIZE);
10d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd
11d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd    protected T get() {
12d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd        T result = keyPool.poll();
13d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd        if (result == null) {
14d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd            result = create();
15d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd        }
16d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd        return result;
17d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd    }
18d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd
19d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd    public void offer(T key) {
20d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd        if (keyPool.size() < MAX_SIZE) {
21d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd            keyPool.offer(key);
22d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd        }
23d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd    }
24d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd
25d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd    protected abstract T create();
26d5ddd93ac507c52f316b094a6740ddb5f122125fSam Judd}
27