/** * Discards samples from the write side of the buffer. * * @param discardFromIndex The absolute index of the first sample to be discarded. * @return The reduced total number of bytes written, after the samples have been discarded. */ public long discardUpstreamSamples(int discardFromIndex) { int discardCount = getWriteIndex() - discardFromIndex; Assertions.checkArgument(0 <= discardCount && discardCount <= queueSize); if (discardCount == 0) { if (absoluteReadIndex == 0) { // queueSize == absoluteReadIndex == 0, so nothing has been written to the queue. return 0; } int lastWriteIndex = (relativeWriteIndex == 0 ? capacity : relativeWriteIndex) - 1; return offsets[lastWriteIndex] + sizes[lastWriteIndex]; } queueSize -= discardCount; relativeWriteIndex = (relativeWriteIndex + capacity - discardCount) % capacity; return offsets[relativeWriteIndex]; }
/** * Returns the current absolute write index. */ public int getWriteIndex() { return infoQueue.getWriteIndex(); }