RecordingBlockQueue.java
package org.hammer.audio;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit;
import org.hammer.audio.core.AudioBlock;
/** Bounded queue abstraction that keeps recorder coordination independent of its implementation. */
final class RecordingBlockQueue {
private final BlockingQueue<AudioBlock> blocks;
private final int maximumSize;
RecordingBlockQueue(int maximumSize) {
this.blocks = new ArrayBlockingQueue<>(maximumSize);
this.maximumSize = maximumSize;
}
boolean offer(AudioBlock block) {
return blocks.offer(block);
}
AudioBlock poll(long timeout, TimeUnit unit) throws InterruptedException {
return blocks.poll(timeout, unit);
}
boolean isEmpty() {
return blocks.isEmpty();
}
int size() {
return blocks.size();
}
int capacity() {
return maximumSize;
}
}