package csp; public class BufferPool { private Buffer[] pool; private int used = 0; public BufferPool() { pool = new Buffer[Constants.MAX_BUFFER_COUNT]; // Initialize buffer pool for (int i = 0; i < Constants.MAX_BUFFER_COUNT; i++) { pool[i] = new Buffer(); } } public Buffer getCSPbuffer() { // Look into all the buffers until a free one is found for (int i = 0; i < Constants.MAX_BUFFER_COUNT; i++) { // @WCA loop = Constants.MAX_BUFFER_COUNT if (pool[i].free) { pool[i].free = false; used++; return pool[i]; } } System.out.println("No available buffers"); return null; } public void freeCSPbuffer(Buffer buffer) { buffer.free = true; used--; } public int getOccupancy(){ return Constants.MAX_BUFFER_COUNT - used; } }