}
@Override
- Indexed<E> readNext() {
- // Compute the index of the next entry in the segment.
- final long index = getNextIndex();
-
+ Indexed<E> readEntry(final long index) {
try {
// Read more bytes from the segment if necessary.
if (memory.remaining() < maxEntrySize) {
abstract void setPosition(int position);
/**
- * Reads the next entry in the segment.
+ * Reads the entry at specified index.
*
- * @return Next entry, or {@code null}
+ * @param index entry index
+ * @return The entry, or {@code null}
*/
- abstract @Nullable Indexed<E> readNext();
+ abstract @Nullable Indexed<E> readEntry(long index);
+
+ private @Nullable Indexed<E> readNext() {
+ // Compute the index of the next entry in the segment.
+ return readEntry(getNextIndex());
+ }
}
}
@Override
- Indexed<E> readNext() {
- // Compute the index of the next entry in the segment.
- final long index = getNextIndex();
-
+ Indexed<E> readEntry(final long index) {
// Mark the buffer so it can be reset if necessary.
buffer.mark();