Bump upstreams
[controller.git] / atomix-storage / src / main / java / io / atomix / storage / journal / SegmentedJournalReader.java
index f28390c84b9f592d4098996124eb8b2e98ca0e5e..4021518ef5273eba5486b36b5f0142f9bf040f07 100644 (file)
@@ -18,25 +18,24 @@ package io.atomix.storage.journal;
 
 import static java.util.Objects.requireNonNull;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.controller.raft.journal.EntryReader;
+import org.opendaylight.controller.raft.journal.FromByteBufMapper;
 
 /**
- * A {@link JournalReader} backed by a {@link ByteBufReader}.
+ * A {@link JournalReader} backed by a {@link EntryReader}.
  */
+@NonNullByDefault
 final class SegmentedJournalReader<E> implements JournalReader<E> {
-    private final ByteBufMapper<E> mapper;
-    private final ByteBufReader reader;
+    private final FromByteBufMapper<E> mapper;
+    private final EntryReader reader;
 
-    SegmentedJournalReader(final ByteBufReader reader, final ByteBufMapper<E> mapper) {
+    SegmentedJournalReader(final EntryReader reader, final FromByteBufMapper<E> mapper) {
         this.reader = requireNonNull(reader);
         this.mapper = requireNonNull(mapper);
     }
 
-    @Override
-    public long getFirstIndex() {
-        return reader.firstIndex();
-    }
-
     @Override
     public long getNextIndex() {
         return reader.nextIndex();
@@ -54,9 +53,10 @@ final class SegmentedJournalReader<E> implements JournalReader<E> {
 
     @Override
     public <T> @Nullable T tryNext(final EntryMapper<E, T> entryMapper) {
-        return reader.tryNext(
-            (index, buf) -> requireNonNull(entryMapper.mapEntry(index, mapper.bytesToObject(buf), buf.readableBytes()))
-        );
+        return reader.tryNext((index, buf) -> {
+            final var size = buf.readableBytes();
+            return requireNonNull(entryMapper.mapEntry(index, mapper.bytesToObject(index, buf), size));
+        });
     }
 
     @Override