public boolean poll(boolean wait, final OutputStream outstream) throws IOException {
if (!queueRunning) {
throw new QueueUnavailableException("queue is not available");
}
final MarkedOutputStream markedOutputStream = new MarkedOutputStream(outstream);
lastTransmission = nanoTime();
if (pagedOut) {
synchronized (pageLock) {
if (pagedOut) {
readInPageFile(outstream, new BufferHelper.MultiMessageHandlerCallback());
wait = false;
return false;
}
}
}
try {
if (wait) {
buffer.readWait(TimeUnit.SECONDS, 20, markedOutputStream, bufferColor,
new BufferHelper.MultiMessageHandlerCallback());
}
else {
buffer.read(markedOutputStream, bufferColor, new BufferHelper.MultiMessageHandlerCallback());
}
outstream.flush();
if (markedOutputStream.dataWasWritten()) {
messageCount.set(0);
return true;
}
}
catch (InterruptedException e) {