Move entry serialization back to ByteBufWriter
[controller.git] / atomix-storage / src / main / java / io / atomix / storage / journal / SegmentedJournalWriter.java
index a5e0737940da27faca0633d62dffc97de58f87e6..144babce761def9982ef9fe75d63305cf0b8cb98 100644 (file)
@@ -18,9 +18,12 @@ package io.atomix.storage.journal;
 
 import static java.util.Objects.requireNonNull;
 
+import org.eclipse.jdt.annotation.NonNullByDefault;
+
 /**
  * A {@link JournalWriter} backed by a {@link ByteBufWriter}.
  */
+@NonNullByDefault
 final class SegmentedJournalWriter<E> implements JournalWriter<E> {
     private final ByteBufMapper<E> mapper;
     private final ByteBufWriter writer;
@@ -42,8 +45,8 @@ final class SegmentedJournalWriter<E> implements JournalWriter<E> {
 
     @Override
     public <T extends E> Indexed<T> append(final T entry) {
-        final var buf = mapper.objectToBytes(entry);
-        return new Indexed<>(writer.append(buf), entry, buf.readableBytes());
+        final var index = writer.nextIndex();
+        return new Indexed<>(index, entry, writer.append(mapper, entry));
     }
 
     @Override