private JournalSegment currentSegment;
private JournalSegmentReader currentReader;
- private Indexed<E> currentEntry;
private long nextIndex;
SegmentedJournalReader(final SegmentedJournal<E> journal, final JournalSegment segment) {
currentSegment = requireNonNull(segment);
currentReader = segment.createReader();
nextIndex = currentSegment.firstIndex();
- currentEntry = null;
}
@Override
return journal.getFirstSegment().firstIndex();
}
- @Override
- public final Indexed<E> getCurrentEntry() {
- return currentEntry;
- }
-
@Override
public final long getNextIndex() {
return nextIndex;
currentSegment = journal.getFirstSegment();
currentReader = currentSegment.createReader();
nextIndex = currentSegment.firstIndex();
- currentEntry = null;
}
@Override
@Override
public Indexed<E> tryNext() {
- var buf = currentReader.readBytes(nextIndex);
+ final var index = nextIndex;
+ var buf = currentReader.readBytes(index);
if (buf == null) {
final var nextSegment = journal.getNextSegment(currentSegment.firstIndex());
- if (nextSegment == null || nextSegment.firstIndex() != nextIndex) {
+ if (nextSegment == null || nextSegment.firstIndex() != index) {
return null;
}
currentSegment = nextSegment;
currentReader = currentSegment.createReader();
- buf = currentReader.readBytes(nextIndex);
+ buf = currentReader.readBytes(index);
if (buf == null) {
return null;
}
}
final var entry = journal.serializer().deserialize(buf);
- currentEntry = new Indexed<>(nextIndex++, entry, buf.readableBytes());
- return currentEntry;
+ nextIndex = index + 1;
+ return new Indexed<>(index, entry, buf.readableBytes());
}
@Override