diff options
Diffstat (limited to 'src/com/android/gallery3d/data/BytesBufferPool.java')
-rw-r--r-- | src/com/android/gallery3d/data/BytesBufferPool.java | 91 |
1 files changed, 0 insertions, 91 deletions
diff --git a/src/com/android/gallery3d/data/BytesBufferPool.java b/src/com/android/gallery3d/data/BytesBufferPool.java deleted file mode 100644 index d2da323fc..000000000 --- a/src/com/android/gallery3d/data/BytesBufferPool.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (C) 2012 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.gallery3d.data; - -import com.android.gallery3d.util.ThreadPool.JobContext; - -import java.io.FileDescriptor; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.ArrayList; - -public class BytesBufferPool { - - private static final int READ_STEP = 4096; - - public static class BytesBuffer { - public byte[] data; - public int offset; - public int length; - - private BytesBuffer(int capacity) { - this.data = new byte[capacity]; - } - - // an helper function to read content from FileDescriptor - public void readFrom(JobContext jc, FileDescriptor fd) throws IOException { - FileInputStream fis = new FileInputStream(fd); - length = 0; - try { - int capacity = data.length; - while (true) { - int step = Math.min(READ_STEP, capacity - length); - int rc = fis.read(data, length, step); - if (rc < 0 || jc.isCancelled()) return; - length += rc; - - if (length == capacity) { - byte[] newData = new byte[data.length * 2]; - System.arraycopy(data, 0, newData, 0, data.length); - data = newData; - capacity = data.length; - } - } - } finally { - fis.close(); - } - } - } - - private final int mPoolSize; - private final int mBufferSize; - private final ArrayList<BytesBuffer> mList; - - public BytesBufferPool(int poolSize, int bufferSize) { - mList = new ArrayList<BytesBuffer>(poolSize); - mPoolSize = poolSize; - mBufferSize = bufferSize; - } - - public synchronized BytesBuffer get() { - int n = mList.size(); - return n > 0 ? mList.remove(n - 1) : new BytesBuffer(mBufferSize); - } - - public synchronized void recycle(BytesBuffer buffer) { - if (buffer.data.length != mBufferSize) return; - if (mList.size() < mPoolSize) { - buffer.offset = 0; - buffer.length = 0; - mList.add(buffer); - } - } - - public synchronized void clear() { - mList.clear(); - } -} |