public synchronized FileOffset getCommitPosition() { if (!offsets.isEmpty()) { return offsets.first().clone(); } return null; }
public synchronized void recordAckedOffset(FileOffset newOffset) { if (newOffset == null) { return; } offsets.add(newOffset); FileOffset currHead = offsets.first(); if (currHead.isNextOffset(newOffset)) { // check is a minor optimization trimHead(); } }
private synchronized void trimHead() { if (offsets.size() <= 1) { return; } FileOffset head = offsets.first(); FileOffset head2 = offsets.higher(head); if (head.isNextOffset(head2)) { offsets.pollFirst(); trimHead(); } return; }
public synchronized FileOffset getCommitPosition() { if(!offsets.isEmpty()) { return offsets.first().clone(); } return null; }
public synchronized void recordAckedOffset(FileOffset newOffset) { if(newOffset==null) { return; } offsets.add(newOffset); FileOffset currHead = offsets.first(); if( currHead.isNextOffset(newOffset) ) { // check is a minor optimization trimHead(); } }
private synchronized void trimHead() { if(offsets.size()<=1) { return; } FileOffset head = offsets.first(); FileOffset head2 = offsets.higher(head); if( head.isNextOffset(head2) ) { offsets.pollFirst(); trimHead(); } return; }