package org.mobicents.media; import java.util.ArrayList; public class BufferFactory { private int BUFF_SIZE = 8192; private ArrayList<Buffer> list = new ArrayList<Buffer>(); private int size; public BufferFactory(int size) { this.size = size; init(); } public BufferFactory(int size, int buffSize) { this.size = size; this.BUFF_SIZE = buffSize; init(); } private void init() { for (int i = 0; i < size; i++) { Buffer buffer = new Buffer(); buffer.setData(new byte[BUFF_SIZE]); buffer.setFactory(this); list.add(buffer); } } public Buffer allocate() { Buffer buffer = null; if (!list.isEmpty()) { buffer = list.remove(0); } if (buffer != null) { buffer.setOffset(0); buffer.setLength(0); return buffer; } buffer = new Buffer(); buffer.setFactory(this); buffer.setData(new byte[BUFF_SIZE]); return buffer; } public void deallocate(Buffer buffer) { if (list.size() < size && buffer != null && buffer.getData() != null) { buffer.setOffset(0); buffer.setLength(0); buffer.setDiscard(false); buffer.setHeader(null); list.add(buffer); } } }