private boolean fulfillFuture()

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;
        }
    }