if (!waitingConsumePayloads.isPublished(nextCursor)) { break;
for (long cursorBound = waitingConsumePayloads.getCursor(); nextCursor <= cursorBound; nextCursor++) { if (!waitingConsumePayloads.isPublished(nextCursor)) { break;
private void updatePublishedSequence() { long c = ringBuffer.getCursor(); if (c >= knownPublishedSeq + 1) { long pos = c; for (long sequence = knownPublishedSeq + 1; sequence <= c; sequence++) { if (!ringBuffer.isPublished(sequence)) { pos = sequence - 1; break; } } knownPublishedSeq = pos; } } }
@Override public void release(List<Reference<T>> batch) { if(null == batch || batch.isEmpty()) { return; } long start = ((RingBufferReference)batch.get(0)).sequenceId; int len = batch.size(); if(len > 1) { long end = ((RingBufferReference)batch.get(len - 1)).sequenceId; ringBuffer.publish(start, end); } else { if(!ringBuffer.isPublished(start)) { ringBuffer.publish(start); } } batch.clear(); }