in src/main/java/com/amazonaws/services/sqs/util/ReceiveQueueBuffer.java [215:245]
private boolean fulfillFuture(ReceiveMessageFuture future) {
for (Iterator<ReceiveMessageBatchTask> iter = finishedTasks.iterator(); iter.hasNext();) {
ReceiveMessageBatchTask task = iter.next();
Exception exception = task.getException();
if (exception != null) {
// Only fulfill a future with an exception if it hasn't collected any messages yet!
// Otherwise messages will be lost.
if (future.messages.isEmpty()) {
iter.remove();
future.completeExceptionally(exception);
return true;
}
} else {
task.populateResult(future);
if (task.isEmpty()) {
task.clear();
iter.remove();
}
if (future.isFull()) {
return true;
}
}
}
if (!future.messages.isEmpty() || future.isExpired()) {
future.complete();
return true;
} else {
return false;
}
}