From d9a6cf341cd16c336a9775196b35fedb5b9e79ec Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Tue, 11 Dec 2018 14:00:49 +0100 Subject: [PATCH] Remove support for marking reader and writerIndex in ByteBuf to reduce overhead and complexity. (#8636) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Motivation: ByteBuf supports “marker indexes”. The intended use case for these is if a speculative operation (e.g. decode) is in process the user can “mark” and interface and refer to it later if the operation isn’t successful (e.g. not enough data). However this is rarely used in practice, requires extra memory to maintain, and introduces complexity in the state management for derived/pooled buffer initialization, resizing, and other operations which may modify reader/writer indexes. Modifications: Remove support for marking and adjust testcases / code. Result: Fixes https://github.com/netty/netty/issues/8535. --- .../java/io/netty/buffer/AbstractByteBuf.java | 50 ----------- .../main/java/io/netty/buffer/ByteBuf.java | 73 +++------------ .../io/netty/buffer/ByteBufInputStream.java | 8 +- .../io/netty/buffer/CompositeByteBuf.java | 28 ------ .../io/netty/buffer/DuplicatedByteBuf.java | 2 - .../java/io/netty/buffer/EmptyByteBuf.java | 20 ----- .../java/io/netty/buffer/PooledByteBuf.java | 1 - .../netty/buffer/PooledDuplicatedByteBuf.java | 3 - .../io/netty/buffer/PooledSlicedByteBuf.java | 1 - .../java/io/netty/buffer/SwappedByteBuf.java | 24 ----- .../java/io/netty/buffer/WrappedByteBuf.java | 24 ----- .../netty/buffer/WrappedCompositeByteBuf.java | 24 ----- .../io/netty/buffer/AbstractByteBufTest.java | 90 ++++++++----------- .../buffer/AbstractCompositeByteBufTest.java | 10 --- .../buffer/AbstractPooledByteBufTest.java | 6 +- .../java/io/netty/buffer/ByteBufUtilTest.java | 12 +-- .../netty/buffer/DuplicatedByteBufTest.java | 22 ----- .../io/netty/buffer/SlicedByteBufTest.java | 8 +- .../codec/http/HttpRequestEncoderTest.java | 4 +- .../codec/http2/DataCompressionHttp2Test.java | 2 +- .../http2/Http2MultiplexCodecBuilderTest.java | 2 +- .../codec/socks/SocksCmdRequestTest.java | 4 +- .../codec/socks/SocksCmdResponseTest.java | 4 +- .../codec/stomp/StompSubframeEncoderTest.java | 2 +- .../codec/ReplayingDecoderByteBuf.java | 22 ----- .../handler/codec/compression/Snappy.java | 16 ++-- .../ProtobufVarint32FrameDecoder.java | 14 +-- .../compression/AbstractEncoderTest.java | 3 +- .../compression/AbstractIntegrationTest.java | 3 +- .../compression/SnappyFrameEncoderTest.java | 2 +- .../handler/codec/compression/ZlibTest.java | 2 +- .../example/factorial/BigIntegerDecoder.java | 6 +- .../io/netty/handler/ssl/SSLEngineTest.java | 2 +- .../WriteBytesVsShortOrMediumBenchmark.java | 12 +-- .../buffer/ByteBufUtilBenchmark.java | 32 +++---- .../buffer/SlicedByteBufBenchmark.java | 4 +- .../netty/resolver/dns/DnsResolveContext.java | 4 +- 37 files changed, 127 insertions(+), 419 deletions(-) diff --git a/buffer/src/main/java/io/netty/buffer/AbstractByteBuf.java b/buffer/src/main/java/io/netty/buffer/AbstractByteBuf.java index 6864cee4da..60af212823 100644 --- a/buffer/src/main/java/io/netty/buffer/AbstractByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/AbstractByteBuf.java @@ -68,8 +68,6 @@ public abstract class AbstractByteBuf extends ByteBuf { int readerIndex; int writerIndex; - private int markedReaderIndex; - private int markedWriterIndex; private int maxCapacity; protected AbstractByteBuf(int maxCapacity) { @@ -188,30 +186,6 @@ public abstract class AbstractByteBuf extends ByteBuf { return maxCapacity() - writerIndex; } - @Override - public ByteBuf markReaderIndex() { - markedReaderIndex = readerIndex; - return this; - } - - @Override - public ByteBuf resetReaderIndex() { - readerIndex(markedReaderIndex); - return this; - } - - @Override - public ByteBuf markWriterIndex() { - markedWriterIndex = writerIndex; - return this; - } - - @Override - public ByteBuf resetWriterIndex() { - writerIndex(markedWriterIndex); - return this; - } - @Override public ByteBuf discardReadBytes() { ensureAccessible(); @@ -222,10 +196,8 @@ public abstract class AbstractByteBuf extends ByteBuf { if (readerIndex != writerIndex) { setBytes(0, this, readerIndex, writerIndex - readerIndex); writerIndex -= readerIndex; - adjustMarkers(readerIndex); readerIndex = 0; } else { - adjustMarkers(readerIndex); writerIndex = readerIndex = 0; } return this; @@ -239,7 +211,6 @@ public abstract class AbstractByteBuf extends ByteBuf { } if (readerIndex == writerIndex) { - adjustMarkers(readerIndex); writerIndex = readerIndex = 0; return this; } @@ -247,28 +218,11 @@ public abstract class AbstractByteBuf extends ByteBuf { if (readerIndex >= capacity() >>> 1) { setBytes(0, this, readerIndex, writerIndex - readerIndex); writerIndex -= readerIndex; - adjustMarkers(readerIndex); readerIndex = 0; } return this; } - protected final void adjustMarkers(int decrement) { - int markedReaderIndex = this.markedReaderIndex; - if (markedReaderIndex <= decrement) { - this.markedReaderIndex = 0; - int markedWriterIndex = this.markedWriterIndex; - if (markedWriterIndex <= decrement) { - this.markedWriterIndex = 0; - } else { - this.markedWriterIndex = markedWriterIndex - decrement; - } - } else { - this.markedReaderIndex = markedReaderIndex - decrement; - markedWriterIndex -= decrement; - } - } - @Override public ByteBuf ensureWritable(int minWritableBytes) { if (minWritableBytes < 0) { @@ -1463,8 +1417,4 @@ public abstract class AbstractByteBuf extends ByteBuf { this.readerIndex = readerIndex; this.writerIndex = writerIndex; } - - final void discardMarks() { - markedReaderIndex = markedWriterIndex = 0; - } } diff --git a/buffer/src/main/java/io/netty/buffer/ByteBuf.java b/buffer/src/main/java/io/netty/buffer/ByteBuf.java index c04340a0d1..637a76054e 100644 --- a/buffer/src/main/java/io/netty/buffer/ByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/ByteBuf.java @@ -183,15 +183,6 @@ import java.nio.charset.UnsupportedCharsetException; * For complicated searches, use {@link #forEachByte(int, int, ByteProcessor)} with a {@link ByteProcessor} * implementation. * - *

Mark and reset

- * - * There are two marker indexes in every buffer. One is for storing - * {@link #readerIndex() readerIndex} and the other is for storing - * {@link #writerIndex() writerIndex}. You can always reposition one of the - * two indexes by calling a reset method. It works in a similar fashion to - * the mark and reset methods in {@link InputStream} except that there's no - * {@code readlimit}. - * *

Derived buffers

* * You can create a view of an existing buffer by calling one of the following methods: @@ -206,7 +197,7 @@ import java.nio.charset.UnsupportedCharsetException; *
  • {@link #readRetainedSlice(int)}
  • * * A derived buffer will have an independent {@link #readerIndex() readerIndex}, - * {@link #writerIndex() writerIndex} and marker indexes, while it shares + * {@link #writerIndex() writerIndex}, while it shares * other internal data representation, just like a NIO buffer does. *

    * In case a completely fresh copy of an existing buffer is required, please @@ -286,8 +277,8 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Returns a buffer with the specified {@code endianness} which shares the whole region, - * indexes, and marks of this buffer. Modifying the content, the indexes, or the marks of the - * returned buffer or this buffer affects each other's content, indexes, and marks. If the + * indexes of this buffer. Modifying the content, the indexes of the + * returned buffer or this buffer affects each other's content, and indexes. If the * specified {@code endianness} is identical to this buffer's byte order, this method can * return {@code this}. This method does not modify {@code readerIndex} or {@code writerIndex} * of this buffer. @@ -458,42 +449,6 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { */ public abstract ByteBuf clear(); - /** - * Marks the current {@code readerIndex} in this buffer. You can - * reposition the current {@code readerIndex} to the marked - * {@code readerIndex} by calling {@link #resetReaderIndex()}. - * The initial value of the marked {@code readerIndex} is {@code 0}. - */ - public abstract ByteBuf markReaderIndex(); - - /** - * Repositions the current {@code readerIndex} to the marked - * {@code readerIndex} in this buffer. - * - * @throws IndexOutOfBoundsException - * if the current {@code writerIndex} is less than the marked - * {@code readerIndex} - */ - public abstract ByteBuf resetReaderIndex(); - - /** - * Marks the current {@code writerIndex} in this buffer. You can - * reposition the current {@code writerIndex} to the marked - * {@code writerIndex} by calling {@link #resetWriterIndex()}. - * The initial value of the marked {@code writerIndex} is {@code 0}. - */ - public abstract ByteBuf markWriterIndex(); - - /** - * Repositions the current {@code writerIndex} to the marked - * {@code writerIndex} in this buffer. - * - * @throws IndexOutOfBoundsException - * if the current {@code readerIndex} is greater than the marked - * {@code writerIndex} - */ - public abstract ByteBuf resetWriterIndex(); - /** * Discards the bytes between the 0th index and {@code readerIndex}. * It moves the bytes between {@code readerIndex} and {@code writerIndex} @@ -2186,7 +2141,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Returns a slice of this buffer's readable bytes. Modifying the content * of the returned buffer or this buffer affects each other's content - * while they maintain separate indexes and marks. This method is + * while they maintain separate indexes. This method is * identical to {@code buf.slice(buf.readerIndex(), buf.readableBytes())}. * This method does not modify {@code readerIndex} or {@code writerIndex} of * this buffer. @@ -2199,7 +2154,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Returns a retained slice of this buffer's readable bytes. Modifying the content * of the returned buffer or this buffer affects each other's content - * while they maintain separate indexes and marks. This method is + * while they maintain separate indexes. This method is * identical to {@code buf.slice(buf.readerIndex(), buf.readableBytes())}. * This method does not modify {@code readerIndex} or {@code writerIndex} of * this buffer. @@ -2213,7 +2168,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Returns a slice of this buffer's sub-region. Modifying the content of * the returned buffer or this buffer affects each other's content while - * they maintain separate indexes and marks. + * they maintain separate indexes. * This method does not modify {@code readerIndex} or {@code writerIndex} of * this buffer. *

    @@ -2225,7 +2180,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Returns a retained slice of this buffer's sub-region. Modifying the content of * the returned buffer or this buffer affects each other's content while - * they maintain separate indexes and marks. + * they maintain separate indexes. * This method does not modify {@code readerIndex} or {@code writerIndex} of * this buffer. *

    @@ -2238,11 +2193,11 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Returns a buffer which shares the whole region of this buffer. * Modifying the content of the returned buffer or this buffer affects - * each other's content while they maintain separate indexes and marks. + * each other's content while they maintain separate indexes. * This method does not modify {@code readerIndex} or {@code writerIndex} of * this buffer. *

    - * The reader and writer marks will not be duplicated. Also be aware that this method will + * Be aware that this method will * NOT call {@link #retain()} and so the reference count will NOT be increased. * @return A buffer whose readable content is equivalent to the buffer returned by {@link #slice()}. * However this buffer will share the capacity of the underlying buffer, and therefore allows access to all of the @@ -2253,7 +2208,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Returns a retained buffer which shares the whole region of this buffer. * Modifying the content of the returned buffer or this buffer affects - * each other's content while they maintain separate indexes and marks. + * each other's content while they maintain separate indexes. * This method is identical to {@code buf.slice(0, buf.capacity())}. * This method does not modify {@code readerIndex} or {@code writerIndex} of * this buffer. @@ -2282,7 +2237,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Exposes this buffer's readable bytes as an NIO {@link ByteBuffer}. The returned buffer * either share or contains the copied content of this buffer, while changing the position - * and limit of the returned NIO buffer does not affect the indexes and marks of this buffer. + * and limit of the returned NIO buffer does not affect the indexes of this buffer. * This method is identical to {@code buf.nioBuffer(buf.readerIndex(), buf.readableBytes())}. * This method does not modify {@code readerIndex} or {@code writerIndex} of this buffer. * Please note that the returned NIO buffer will not see the changes of this buffer if this buffer @@ -2300,7 +2255,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Exposes this buffer's sub-region as an NIO {@link ByteBuffer}. The returned buffer * either share or contains the copied content of this buffer, while changing the position - * and limit of the returned NIO buffer does not affect the indexes and marks of this buffer. + * and limit of the returned NIO buffer does not affect the indexes of this buffer. * This method does not modify {@code readerIndex} or {@code writerIndex} of this buffer. * Please note that the returned NIO buffer will not see the changes of this buffer if this buffer * is a dynamic buffer and it adjusted its capacity. @@ -2322,7 +2277,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Exposes this buffer's readable bytes as an NIO {@link ByteBuffer}'s. The returned buffer * either share or contains the copied content of this buffer, while changing the position - * and limit of the returned NIO buffer does not affect the indexes and marks of this buffer. + * and limit of the returned NIO buffer does not affect the indexes of this buffer. * This method does not modify {@code readerIndex} or {@code writerIndex} of this buffer. * Please note that the returned NIO buffer will not see the changes of this buffer if this buffer * is a dynamic buffer and it adjusted its capacity. @@ -2340,7 +2295,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable { /** * Exposes this buffer's bytes as an NIO {@link ByteBuffer}'s for the specified index and length * The returned buffer either share or contains the copied content of this buffer, while changing - * the position and limit of the returned NIO buffer does not affect the indexes and marks of this buffer. + * the position and limit of the returned NIO buffer does not affect the indexes of this buffer. * This method does not modify {@code readerIndex} or {@code writerIndex} of this buffer. Please note that the * returned NIO buffer will not see the changes of this buffer if this buffer is a dynamic * buffer and it adjusted its capacity. diff --git a/buffer/src/main/java/io/netty/buffer/ByteBufInputStream.java b/buffer/src/main/java/io/netty/buffer/ByteBufInputStream.java index 038cd8db45..16dce6fd53 100644 --- a/buffer/src/main/java/io/netty/buffer/ByteBufInputStream.java +++ b/buffer/src/main/java/io/netty/buffer/ByteBufInputStream.java @@ -45,6 +45,8 @@ public class ByteBufInputStream extends InputStream implements DataInput { private final int startIndex; private final int endIndex; private boolean closed; + private int markReaderIndex; + /** * To preserve backwards compatibility (which didn't transfer ownership) we support a conditional flag which * indicates if {@link #buffer} should be released when this {@link InputStream} is closed. @@ -123,7 +125,7 @@ public class ByteBufInputStream extends InputStream implements DataInput { this.buffer = buffer; startIndex = buffer.readerIndex(); endIndex = startIndex + length; - buffer.markReaderIndex(); + markReaderIndex = startIndex; } /** @@ -153,7 +155,7 @@ public class ByteBufInputStream extends InputStream implements DataInput { @Override public void mark(int readlimit) { - buffer.markReaderIndex(); + markReaderIndex = buffer.readerIndex(); } @Override @@ -183,7 +185,7 @@ public class ByteBufInputStream extends InputStream implements DataInput { @Override public void reset() throws IOException { - buffer.resetReaderIndex(); + buffer.readerIndex(markReaderIndex); } @Override diff --git a/buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java b/buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java index ce3c9f7f41..1415751f52 100644 --- a/buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/CompositeByteBuf.java @@ -1681,7 +1681,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements lastAccessed = null; clearComps(); setIndex(0, 0); - adjustMarkers(readerIndex); return this; } @@ -1698,7 +1697,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements int offset = first.offset; updateComponentOffsets(0); setIndex(readerIndex - offset, writerIndex - offset); - adjustMarkers(offset); return this; } @@ -1719,7 +1717,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements lastAccessed = null; clearComps(); setIndex(0, 0); - adjustMarkers(readerIndex); return this; } @@ -1754,7 +1751,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements // Update indexes and markers. updateComponentOffsets(0); setIndex(0, writerIndex - readerIndex); - adjustMarkers(readerIndex); return this; } @@ -1852,30 +1848,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements return this; } - @Override - public CompositeByteBuf markReaderIndex() { - super.markReaderIndex(); - return this; - } - - @Override - public CompositeByteBuf resetReaderIndex() { - super.resetReaderIndex(); - return this; - } - - @Override - public CompositeByteBuf markWriterIndex() { - super.markWriterIndex(); - return this; - } - - @Override - public CompositeByteBuf resetWriterIndex() { - super.resetWriterIndex(); - return this; - } - @Override public CompositeByteBuf ensureWritable(int minWritableBytes) { super.ensureWritable(minWritableBytes); diff --git a/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java b/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java index f48c6ceb98..8b5778801c 100644 --- a/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/DuplicatedByteBuf.java @@ -54,8 +54,6 @@ public class DuplicatedByteBuf extends AbstractDerivedByteBuf { } setIndex(readerIndex, writerIndex); - markReaderIndex(); - markWriterIndex(); } @Override diff --git a/buffer/src/main/java/io/netty/buffer/EmptyByteBuf.java b/buffer/src/main/java/io/netty/buffer/EmptyByteBuf.java index b954318a7f..7c7909f1c9 100644 --- a/buffer/src/main/java/io/netty/buffer/EmptyByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/EmptyByteBuf.java @@ -191,26 +191,6 @@ public final class EmptyByteBuf extends ByteBuf { return this; } - @Override - public ByteBuf markReaderIndex() { - return this; - } - - @Override - public ByteBuf resetReaderIndex() { - return this; - } - - @Override - public ByteBuf markWriterIndex() { - return this; - } - - @Override - public ByteBuf resetWriterIndex() { - return this; - } - @Override public ByteBuf discardReadBytes() { return this; diff --git a/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java b/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java index beffbb07ee..d1d8e31563 100644 --- a/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/PooledByteBuf.java @@ -74,7 +74,6 @@ abstract class PooledByteBuf extends AbstractReferenceCountedByteBuf { maxCapacity(maxCapacity); setRefCnt(1); setIndex0(0, 0); - discardMarks(); } @Override diff --git a/buffer/src/main/java/io/netty/buffer/PooledDuplicatedByteBuf.java b/buffer/src/main/java/io/netty/buffer/PooledDuplicatedByteBuf.java index 1260f4e31f..0b5a4777fd 100644 --- a/buffer/src/main/java/io/netty/buffer/PooledDuplicatedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/PooledDuplicatedByteBuf.java @@ -41,9 +41,6 @@ final class PooledDuplicatedByteBuf extends AbstractPooledDerivedByteBuf { int readerIndex, int writerIndex) { final PooledDuplicatedByteBuf duplicate = RECYCLER.get(); duplicate.init(unwrapped, wrapped, readerIndex, writerIndex, unwrapped.maxCapacity()); - duplicate.markReaderIndex(); - duplicate.markWriterIndex(); - return duplicate; } diff --git a/buffer/src/main/java/io/netty/buffer/PooledSlicedByteBuf.java b/buffer/src/main/java/io/netty/buffer/PooledSlicedByteBuf.java index 44051881ab..10580620fa 100644 --- a/buffer/src/main/java/io/netty/buffer/PooledSlicedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/PooledSlicedByteBuf.java @@ -49,7 +49,6 @@ final class PooledSlicedByteBuf extends AbstractPooledDerivedByteBuf { int adjustment, int length) { final PooledSlicedByteBuf slice = RECYCLER.get(); slice.init(unwrapped, wrapped, 0, length, length); - slice.discardMarks(); slice.adjustment = adjustment; return slice; diff --git a/buffer/src/main/java/io/netty/buffer/SwappedByteBuf.java b/buffer/src/main/java/io/netty/buffer/SwappedByteBuf.java index 5d54a1f9f1..8ae2fb3398 100644 --- a/buffer/src/main/java/io/netty/buffer/SwappedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/SwappedByteBuf.java @@ -177,30 +177,6 @@ public class SwappedByteBuf extends ByteBuf { return this; } - @Override - public ByteBuf markReaderIndex() { - buf.markReaderIndex(); - return this; - } - - @Override - public ByteBuf resetReaderIndex() { - buf.resetReaderIndex(); - return this; - } - - @Override - public ByteBuf markWriterIndex() { - buf.markWriterIndex(); - return this; - } - - @Override - public ByteBuf resetWriterIndex() { - buf.resetWriterIndex(); - return this; - } - @Override public ByteBuf discardReadBytes() { buf.discardReadBytes(); diff --git a/buffer/src/main/java/io/netty/buffer/WrappedByteBuf.java b/buffer/src/main/java/io/netty/buffer/WrappedByteBuf.java index 45aa60ce88..b81854888a 100644 --- a/buffer/src/main/java/io/netty/buffer/WrappedByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/WrappedByteBuf.java @@ -167,30 +167,6 @@ class WrappedByteBuf extends ByteBuf { return this; } - @Override - public final ByteBuf markReaderIndex() { - buf.markReaderIndex(); - return this; - } - - @Override - public final ByteBuf resetReaderIndex() { - buf.resetReaderIndex(); - return this; - } - - @Override - public final ByteBuf markWriterIndex() { - buf.markWriterIndex(); - return this; - } - - @Override - public final ByteBuf resetWriterIndex() { - buf.resetWriterIndex(); - return this; - } - @Override public ByteBuf discardReadBytes() { buf.discardReadBytes(); diff --git a/buffer/src/main/java/io/netty/buffer/WrappedCompositeByteBuf.java b/buffer/src/main/java/io/netty/buffer/WrappedCompositeByteBuf.java index b124eb2d2b..62b0368760 100644 --- a/buffer/src/main/java/io/netty/buffer/WrappedCompositeByteBuf.java +++ b/buffer/src/main/java/io/netty/buffer/WrappedCompositeByteBuf.java @@ -921,30 +921,6 @@ class WrappedCompositeByteBuf extends CompositeByteBuf { return this; } - @Override - public final CompositeByteBuf markReaderIndex() { - wrapped.markReaderIndex(); - return this; - } - - @Override - public final CompositeByteBuf resetReaderIndex() { - wrapped.resetReaderIndex(); - return this; - } - - @Override - public final CompositeByteBuf markWriterIndex() { - wrapped.markWriterIndex(); - return this; - } - - @Override - public final CompositeByteBuf resetWriterIndex() { - wrapped.resetWriterIndex(); - return this; - } - @Override public CompositeByteBuf ensureWritable(int minWritableBytes) { wrapped.ensureWritable(minWritableBytes); diff --git a/buffer/src/test/java/io/netty/buffer/AbstractByteBufTest.java b/buffer/src/test/java/io/netty/buffer/AbstractByteBufTest.java index 59194ab374..082c9a89d5 100644 --- a/buffer/src/test/java/io/netty/buffer/AbstractByteBufTest.java +++ b/buffer/src/test/java/io/netty/buffer/AbstractByteBufTest.java @@ -1775,9 +1775,9 @@ public abstract class AbstractByteBufTest { // Make sure there's no effect if called when readerIndex is 0. buffer.readerIndex(CAPACITY / 4); - buffer.markReaderIndex(); + int readerIndex = buffer.readerIndex(); buffer.writerIndex(CAPACITY / 3); - buffer.markWriterIndex(); + int writerIndex = buffer.writerIndex(); buffer.readerIndex(0); buffer.writerIndex(CAPACITY / 2); buffer.discardReadBytes(); @@ -1785,9 +1785,9 @@ public abstract class AbstractByteBufTest { assertEquals(0, buffer.readerIndex()); assertEquals(CAPACITY / 2, buffer.writerIndex()); assertEquals(copy.slice(0, CAPACITY / 2), buffer.slice(0, CAPACITY / 2)); - buffer.resetReaderIndex(); + buffer.readerIndex(readerIndex); assertEquals(CAPACITY / 4, buffer.readerIndex()); - buffer.resetWriterIndex(); + buffer.writerIndex(writerIndex); assertEquals(CAPACITY / 3, buffer.writerIndex()); // Make sure bytes after writerIndex is not copied. @@ -1806,11 +1806,6 @@ public abstract class AbstractByteBufTest { assertEquals(copy.slice(CAPACITY / 2, CAPACITY / 2), buffer.slice(CAPACITY / 2 - 1, CAPACITY / 2)); } - // Marks also should be relocated. - buffer.resetReaderIndex(); - assertEquals(CAPACITY / 4 - 1, buffer.readerIndex()); - buffer.resetWriterIndex(); - assertEquals(CAPACITY / 3 - 1, buffer.writerIndex()); copy.release(); } @@ -3742,11 +3737,11 @@ public abstract class AbstractByteBufTest { @Test public void testRetainedSliceAndRetainedDuplicateContentIsExpected() { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected1 = newBuffer(6).resetWriterIndex(); - ByteBuf expected2 = newBuffer(5).resetWriterIndex(); - ByteBuf expected3 = newBuffer(4).resetWriterIndex(); - ByteBuf expected4 = newBuffer(3).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected1 = newBuffer(6).writerIndex(0); + ByteBuf expected2 = newBuffer(5).writerIndex(0); + ByteBuf expected3 = newBuffer(4).writerIndex(0); + ByteBuf expected4 = newBuffer(3).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7}); expected2.writeBytes(new byte[] {3, 4, 5, 6, 7}); @@ -3805,10 +3800,10 @@ public abstract class AbstractByteBufTest { @Test public void testRetainedDuplicateAndRetainedSliceContentIsExpected() { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected1 = newBuffer(6).resetWriterIndex(); - ByteBuf expected2 = newBuffer(5).resetWriterIndex(); - ByteBuf expected3 = newBuffer(4).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected1 = newBuffer(6).writerIndex(0); + ByteBuf expected2 = newBuffer(5).writerIndex(0); + ByteBuf expected3 = newBuffer(4).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7}); expected2.writeBytes(new byte[] {3, 4, 5, 6, 7}); @@ -4157,8 +4152,8 @@ public abstract class AbstractByteBufTest { } private void testSliceContents(boolean retainedSlice) { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected = newBuffer(3).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected = newBuffer(3).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected.writeBytes(new byte[] {4, 5, 6}); ByteBuf slice = retainedSlice ? buf.retainedSlice(buf.readerIndex() + 3, 3) @@ -4180,9 +4175,9 @@ public abstract class AbstractByteBufTest { } private void testSliceReleaseOriginal(boolean retainedSlice1, boolean retainedSlice2) { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected1 = newBuffer(3).resetWriterIndex(); - ByteBuf expected2 = newBuffer(2).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected1 = newBuffer(3).writerIndex(0); + ByteBuf expected2 = newBuffer(2).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected1.writeBytes(new byte[] {6, 7, 8}); expected2.writeBytes(new byte[] {7, 8}); @@ -4214,12 +4209,12 @@ public abstract class AbstractByteBufTest { } private void testMultipleLevelRetainedSliceWithNonRetained(boolean doSlice1, boolean doSlice2) { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected1 = newBuffer(6).resetWriterIndex(); - ByteBuf expected2 = newBuffer(4).resetWriterIndex(); - ByteBuf expected3 = newBuffer(2).resetWriterIndex(); - ByteBuf expected4SliceSlice = newBuffer(1).resetWriterIndex(); - ByteBuf expected4DupSlice = newBuffer(1).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected1 = newBuffer(6).writerIndex(0); + ByteBuf expected2 = newBuffer(4).writerIndex(0); + ByteBuf expected3 = newBuffer(2).writerIndex(0); + ByteBuf expected4SliceSlice = newBuffer(1).writerIndex(0); + ByteBuf expected4DupSlice = newBuffer(1).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7}); expected2.writeBytes(new byte[] {3, 4, 5, 6}); @@ -4284,8 +4279,8 @@ public abstract class AbstractByteBufTest { } private void testDuplicateReleaseOriginal(boolean retainedDuplicate1, boolean retainedDuplicate2) { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected = newBuffer(8).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected = newBuffer(8).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected.writeBytes(buf, buf.readerIndex(), buf.readableBytes()); ByteBuf dup1 = retainedDuplicate1 ? buf.retainedDuplicate() @@ -4315,10 +4310,10 @@ public abstract class AbstractByteBufTest { } private void testMultipleRetainedSliceReleaseOriginal(boolean retainedSlice1, boolean retainedSlice2) { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected1 = newBuffer(3).resetWriterIndex(); - ByteBuf expected2 = newBuffer(2).resetWriterIndex(); - ByteBuf expected3 = newBuffer(2).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected1 = newBuffer(3).writerIndex(0); + ByteBuf expected2 = newBuffer(2).writerIndex(0); + ByteBuf expected3 = newBuffer(2).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected1.writeBytes(new byte[] {6, 7, 8}); expected2.writeBytes(new byte[] {7, 8}); @@ -4359,8 +4354,8 @@ public abstract class AbstractByteBufTest { } private void testMultipleRetainedDuplicateReleaseOriginal(boolean retainedDuplicate1, boolean retainedDuplicate2) { - ByteBuf buf = newBuffer(8).resetWriterIndex(); - ByteBuf expected = newBuffer(8).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); + ByteBuf expected = newBuffer(8).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); expected.writeBytes(buf, buf.readerIndex(), buf.readableBytes()); ByteBuf dup1 = retainedDuplicate1 ? buf.retainedDuplicate() @@ -4406,7 +4401,7 @@ public abstract class AbstractByteBufTest { } private void testDuplicateContents(boolean retainedDuplicate) { - ByteBuf buf = newBuffer(8).resetWriterIndex(); + ByteBuf buf = newBuffer(8).writerIndex(0); buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8}); ByteBuf dup = retainedDuplicate ? buf.retainedDuplicate() : buf.duplicate(); try { @@ -4497,9 +4492,7 @@ public abstract class AbstractByteBufTest { byte[] bytes = {'a', 'b', 'c', 'd'}; int len = bytes.length; - ByteBuf buffer = newBuffer(len); - buffer.resetReaderIndex(); - buffer.resetWriterIndex(); + ByteBuf buffer = newBuffer(len).writerIndex(0); buffer.writeBytes(bytes); int oldReaderIndex = buffer.readerIndex(); @@ -4507,9 +4500,7 @@ public abstract class AbstractByteBufTest { assertEquals(oldReaderIndex + len, buffer.readerIndex()); assertEquals(channelPosition, channel.position()); - ByteBuf buffer2 = newBuffer(len); - buffer2.resetReaderIndex(); - buffer2.resetWriterIndex(); + ByteBuf buffer2 = newBuffer(len).writerIndex(0); int oldWriterIndex = buffer2.writerIndex(); assertEquals(len, buffer2.writeBytes(channel, 10, len)); assertEquals(channelPosition, channel.position()); @@ -4540,9 +4531,7 @@ public abstract class AbstractByteBufTest { byte[] bytes = {'a', 'b', 'c', 'd'}; int len = bytes.length; - ByteBuf buffer = newBuffer(len); - buffer.resetReaderIndex(); - buffer.resetWriterIndex(); + ByteBuf buffer = newBuffer(len).writerIndex(0); buffer.writeBytes(bytes); int oldReaderIndex = buffer.readerIndex(); @@ -4550,9 +4539,7 @@ public abstract class AbstractByteBufTest { assertEquals(oldReaderIndex, buffer.readerIndex()); assertEquals(channelPosition, channel.position()); - ByteBuf buffer2 = newBuffer(len); - buffer2.resetReaderIndex(); - buffer2.resetWriterIndex(); + ByteBuf buffer2 = newBuffer(len).writerIndex(0); int oldWriterIndex = buffer2.writerIndex(); assertEquals(buffer2.setBytes(oldWriterIndex, channel, 10, len), len); assertEquals(channelPosition, channel.position()); @@ -4866,14 +4853,13 @@ public abstract class AbstractByteBufTest { ByteBuf buffer = newBuffer(length); buffer.setIndex(0, 0); buffer.writeCharSequence(content1, CharsetUtil.US_ASCII); - buffer.markWriterIndex(); buffer.skipBytes(content1.length()); buffer.writeCharSequence(content2, CharsetUtil.US_ASCII); buffer.skipBytes(content2.length()); assertTrue(buffer.readerIndex() <= buffer.writerIndex()); try { - buffer.resetWriterIndex(); + buffer.readerIndex(buffer.writerIndex() + 1); } finally { buffer.release(); } diff --git a/buffer/src/test/java/io/netty/buffer/AbstractCompositeByteBufTest.java b/buffer/src/test/java/io/netty/buffer/AbstractCompositeByteBufTest.java index c51a991ec3..92374bcf8b 100644 --- a/buffer/src/test/java/io/netty/buffer/AbstractCompositeByteBufTest.java +++ b/buffer/src/test/java/io/netty/buffer/AbstractCompositeByteBufTest.java @@ -143,17 +143,13 @@ public abstract class AbstractCompositeByteBufTest extends AbstractByteBufTest { wrappedBuffer(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 0, 5).order(order), wrappedBuffer(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 5, 5).order(order)); a.skipBytes(6); - a.markReaderIndex(); b.skipBytes(6); - b.markReaderIndex(); assertEquals(a.readerIndex(), b.readerIndex()); a.readerIndex(a.readerIndex() - 1); b.readerIndex(b.readerIndex() - 1); assertEquals(a.readerIndex(), b.readerIndex()); a.writerIndex(a.writerIndex() - 1); - a.markWriterIndex(); b.writerIndex(b.writerIndex() - 1); - b.markWriterIndex(); assertEquals(a.writerIndex(), b.writerIndex()); a.writerIndex(a.writerIndex() + 1); b.writerIndex(b.writerIndex() + 1); @@ -165,12 +161,6 @@ public abstract class AbstractCompositeByteBufTest extends AbstractByteBufTest { assertEquals(a.readerIndex(), b.readerIndex()); assertEquals(a.writerIndex(), b.writerIndex()); assertTrue(ByteBufUtil.equals(a, b)); - a.resetReaderIndex(); - b.resetReaderIndex(); - assertEquals(a.readerIndex(), b.readerIndex()); - a.resetWriterIndex(); - b.resetWriterIndex(); - assertEquals(a.writerIndex(), b.writerIndex()); assertTrue(ByteBufUtil.equals(a, b)); a.release(); diff --git a/buffer/src/test/java/io/netty/buffer/AbstractPooledByteBufTest.java b/buffer/src/test/java/io/netty/buffer/AbstractPooledByteBufTest.java index eb76157ab1..902548d2f3 100644 --- a/buffer/src/test/java/io/netty/buffer/AbstractPooledByteBufTest.java +++ b/buffer/src/test/java/io/netty/buffer/AbstractPooledByteBufTest.java @@ -31,11 +31,7 @@ public abstract class AbstractPooledByteBufTest extends AbstractByteBufTest { protected ByteBuf newBuffer(int length, int maxCapacity) { ByteBuf buffer = alloc(length, maxCapacity); - // Testing if the writerIndex and readerIndex are correct when allocate and also after we reset the mark. - assertEquals(0, buffer.writerIndex()); - assertEquals(0, buffer.readerIndex()); - buffer.resetReaderIndex(); - buffer.resetWriterIndex(); + // Testing if the writerIndex and readerIndex are correct when allocate. assertEquals(0, buffer.writerIndex()); assertEquals(0, buffer.readerIndex()); return buffer; diff --git a/buffer/src/test/java/io/netty/buffer/ByteBufUtilTest.java b/buffer/src/test/java/io/netty/buffer/ByteBufUtilTest.java index da9b344f40..828c874e6b 100644 --- a/buffer/src/test/java/io/netty/buffer/ByteBufUtilTest.java +++ b/buffer/src/test/java/io/netty/buffer/ByteBufUtilTest.java @@ -142,14 +142,14 @@ public class ByteBufUtilTest { ByteBuf buf = Unpooled.buffer(2).order(ByteOrder.BIG_ENDIAN); ByteBufUtil.writeShortBE(buf, expected); assertEquals(expected, buf.readShort()); - buf.resetReaderIndex(); + buf.readerIndex(0); assertEquals(ByteBufUtil.swapShort((short) expected), buf.readShortLE()); buf.release(); buf = Unpooled.buffer(2).order(ByteOrder.LITTLE_ENDIAN); ByteBufUtil.writeShortBE(buf, expected); assertEquals((short) expected, buf.readShortLE()); - buf.resetReaderIndex(); + buf.readerIndex(0); assertEquals(ByteBufUtil.swapShort((short) expected), buf.readShort()); buf.release(); } @@ -162,14 +162,14 @@ public class ByteBufUtilTest { ByteBuf buf = Unpooled.wrappedBuffer(new byte[2]).order(ByteOrder.BIG_ENDIAN); ByteBufUtil.setShortBE(buf, 0, shortValue); assertEquals(shortValue, buf.readShort()); - buf.resetReaderIndex(); + buf.readerIndex(0); assertEquals(ByteBufUtil.swapShort((short) shortValue), buf.readShortLE()); buf.release(); buf = Unpooled.wrappedBuffer(new byte[2]).order(ByteOrder.LITTLE_ENDIAN); ByteBufUtil.setShortBE(buf, 0, shortValue); assertEquals((short) shortValue, buf.readShortLE()); - buf.resetReaderIndex(); + buf.readerIndex(0); assertEquals(ByteBufUtil.swapShort((short) shortValue), buf.readShort()); buf.release(); } @@ -182,14 +182,14 @@ public class ByteBufUtilTest { ByteBuf buf = Unpooled.buffer(4).order(ByteOrder.BIG_ENDIAN); ByteBufUtil.writeMediumBE(buf, mediumValue); assertEquals(mediumValue, buf.readMedium()); - buf.resetReaderIndex(); + buf.readerIndex(0); assertEquals(ByteBufUtil.swapMedium(mediumValue), buf.readMediumLE()); buf.release(); buf = Unpooled.buffer(4).order(ByteOrder.LITTLE_ENDIAN); ByteBufUtil.writeMediumBE(buf, mediumValue); assertEquals(mediumValue, buf.readMediumLE()); - buf.resetReaderIndex(); + buf.readerIndex(0); assertEquals(ByteBufUtil.swapMedium(mediumValue), buf.readMedium()); buf.release(); } diff --git a/buffer/src/test/java/io/netty/buffer/DuplicatedByteBufTest.java b/buffer/src/test/java/io/netty/buffer/DuplicatedByteBufTest.java index 2e88657b66..4b3001c307 100644 --- a/buffer/src/test/java/io/netty/buffer/DuplicatedByteBufTest.java +++ b/buffer/src/test/java/io/netty/buffer/DuplicatedByteBufTest.java @@ -50,26 +50,4 @@ public class DuplicatedByteBufTest extends AbstractByteBufTest { assertEquals((byte) 0, buffer.readByte()); } - - @Test - public void testMarksInitialized() { - ByteBuf wrapped = Unpooled.buffer(8); - try { - wrapped.writerIndex(6); - wrapped.readerIndex(1); - ByteBuf duplicate = new DuplicatedByteBuf(wrapped); - - // Test writer mark - duplicate.writerIndex(duplicate.writerIndex() + 1); - duplicate.resetWriterIndex(); - assertEquals(wrapped.writerIndex(), duplicate.writerIndex()); - - // Test reader mark - duplicate.readerIndex(duplicate.readerIndex() + 1); - duplicate.resetReaderIndex(); - assertEquals(wrapped.readerIndex(), duplicate.readerIndex()); - } finally { - wrapped.release(); - } - } } diff --git a/buffer/src/test/java/io/netty/buffer/SlicedByteBufTest.java b/buffer/src/test/java/io/netty/buffer/SlicedByteBufTest.java index 4079571feb..18fce0f443 100644 --- a/buffer/src/test/java/io/netty/buffer/SlicedByteBufTest.java +++ b/buffer/src/test/java/io/netty/buffer/SlicedByteBufTest.java @@ -147,23 +147,21 @@ public class SlicedByteBufTest extends AbstractByteBufTest { } @Test - public void testReaderIndexAndMarks() { + public void testReaderIndex() { ByteBuf wrapped = Unpooled.buffer(16); try { wrapped.writerIndex(14); wrapped.readerIndex(2); - wrapped.markWriterIndex(); - wrapped.markReaderIndex(); ByteBuf slice = wrapped.slice(4, 4); assertEquals(0, slice.readerIndex()); assertEquals(4, slice.writerIndex()); slice.readerIndex(slice.readerIndex() + 1); - slice.resetReaderIndex(); + slice.readerIndex(0); assertEquals(0, slice.readerIndex()); slice.writerIndex(slice.writerIndex() - 1); - slice.resetWriterIndex(); + slice.writerIndex(0); assertEquals(0, slice.writerIndex()); } finally { wrapped.release(); diff --git a/codec-http/src/test/java/io/netty/handler/codec/http/HttpRequestEncoderTest.java b/codec-http/src/test/java/io/netty/handler/codec/http/HttpRequestEncoderTest.java index 2f866f719d..0cd2c9ec43 100644 --- a/codec-http/src/test/java/io/netty/handler/codec/http/HttpRequestEncoderTest.java +++ b/codec-http/src/test/java/io/netty/handler/codec/http/HttpRequestEncoderTest.java @@ -41,8 +41,8 @@ public class HttpRequestEncoderTest { return new ByteBuf[]{ Unpooled.buffer(128).order(ByteOrder.BIG_ENDIAN), Unpooled.buffer(128).order(ByteOrder.LITTLE_ENDIAN), - Unpooled.wrappedBuffer(ByteBuffer.allocate(128).order(ByteOrder.BIG_ENDIAN)).resetWriterIndex(), - Unpooled.wrappedBuffer(ByteBuffer.allocate(128).order(ByteOrder.LITTLE_ENDIAN)).resetWriterIndex() + Unpooled.wrappedBuffer(ByteBuffer.allocate(128).order(ByteOrder.BIG_ENDIAN)).writerIndex(0), + Unpooled.wrappedBuffer(ByteBuffer.allocate(128).order(ByteOrder.LITTLE_ENDIAN)).writerIndex(0) }; } diff --git a/codec-http2/src/test/java/io/netty/handler/codec/http2/DataCompressionHttp2Test.java b/codec-http2/src/test/java/io/netty/handler/codec/http2/DataCompressionHttp2Test.java index 1d815a330c..765c387ebc 100644 --- a/codec-http2/src/test/java/io/netty/handler/codec/http2/DataCompressionHttp2Test.java +++ b/codec-http2/src/test/java/io/netty/handler/codec/http2/DataCompressionHttp2Test.java @@ -255,7 +255,7 @@ public class DataCompressionHttp2Test { } }); awaitServer(); - assertEquals(data.resetReaderIndex().toString(CharsetUtil.UTF_8), + assertEquals(data.readerIndex(0).toString(CharsetUtil.UTF_8), serverOut.toString(CharsetUtil.UTF_8.name())); } finally { data.release(); diff --git a/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2MultiplexCodecBuilderTest.java b/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2MultiplexCodecBuilderTest.java index c12f5f8b7c..86ba1290e2 100644 --- a/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2MultiplexCodecBuilderTest.java +++ b/codec-http2/src/test/java/io/netty/handler/codec/http2/Http2MultiplexCodecBuilderTest.java @@ -200,7 +200,7 @@ public class Http2MultiplexCodecBuilderTest { Http2DataFrame dataFrame = serverLastInboundHandler.blockingReadInbound(); assertNotNull(dataFrame); assertEquals(3, dataFrame.stream().id()); - assertEquals(data.resetReaderIndex(), dataFrame.content()); + assertEquals(data.readerIndex(0), dataFrame.content()); assertTrue(dataFrame.isEndStream()); dataFrame.release(); diff --git a/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdRequestTest.java b/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdRequestTest.java index 4013c8b929..b43155fcc0 100644 --- a/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdRequestTest.java +++ b/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdRequestTest.java @@ -89,7 +89,7 @@ public class SocksCmdRequestTest { ByteBuf buffer = Unpooled.buffer(16); rq.encodeAsByteBuf(buffer); - buffer.resetReaderIndex(); + buffer.readerIndex(0); assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte()); assertEquals(SocksCmdType.BIND.byteValue(), buffer.readByte()); assertEquals((byte) 0x00, buffer.readByte()); @@ -111,7 +111,7 @@ public class SocksCmdRequestTest { ByteBuf buffer = Unpooled.buffer(24); rq.encodeAsByteBuf(buffer); - buffer.resetReaderIndex(); + buffer.readerIndex(0); assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte()); assertEquals(SocksCmdType.BIND.byteValue(), buffer.readByte()); assertEquals((byte) 0x00, buffer.readByte()); diff --git a/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdResponseTest.java b/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdResponseTest.java index 3ca64252d5..becb3376d3 100644 --- a/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdResponseTest.java +++ b/codec-socks/src/test/java/io/netty/handler/codec/socks/SocksCmdResponseTest.java @@ -123,7 +123,7 @@ public class SocksCmdResponseTest { ByteBuf buffer = Unpooled.buffer(16); rs.encodeAsByteBuf(buffer); - buffer.resetReaderIndex(); + buffer.readerIndex(0); assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte()); assertEquals(SocksCmdStatus.SUCCESS.byteValue(), buffer.readByte()); assertEquals((byte) 0x00, buffer.readByte()); @@ -145,7 +145,7 @@ public class SocksCmdResponseTest { ByteBuf buffer = Unpooled.buffer(24); rs.encodeAsByteBuf(buffer); - buffer.resetReaderIndex(); + buffer.readerIndex(0); assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte()); assertEquals(SocksCmdStatus.SUCCESS.byteValue(), buffer.readByte()); assertEquals((byte) 0x00, buffer.readByte()); diff --git a/codec-stomp/src/test/java/io/netty/handler/codec/stomp/StompSubframeEncoderTest.java b/codec-stomp/src/test/java/io/netty/handler/codec/stomp/StompSubframeEncoderTest.java index 939f8b45ff..22e6cb28a0 100644 --- a/codec-stomp/src/test/java/io/netty/handler/codec/stomp/StompSubframeEncoderTest.java +++ b/codec-stomp/src/test/java/io/netty/handler/codec/stomp/StompSubframeEncoderTest.java @@ -58,7 +58,7 @@ public class StompSubframeEncoderTest { aggregatedBuffer.writeBytes(byteBuf); byteBuf.release(); - aggregatedBuffer.resetReaderIndex(); + aggregatedBuffer.readerIndex(0); String content = aggregatedBuffer.toString(CharsetUtil.UTF_8); assertEquals(StompTestConstants.CONNECT_FRAME, content); aggregatedBuffer.release(); diff --git a/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java b/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java index 5e71b7dac6..d5f45b26b9 100644 --- a/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java +++ b/codec/src/main/java/io/netty/handler/codec/ReplayingDecoderByteBuf.java @@ -454,17 +454,6 @@ final class ReplayingDecoderByteBuf extends ByteBuf { return buffer.forEachByteDesc(index, length, processor); } - @Override - public ByteBuf markReaderIndex() { - buffer.markReaderIndex(); - return this; - } - - @Override - public ByteBuf markWriterIndex() { - throw reject(); - } - @Override public ByteOrder order() { return buffer.order(); @@ -713,17 +702,6 @@ final class ReplayingDecoderByteBuf extends ByteBuf { return buffer.readCharSequence(length, charset); } - @Override - public ByteBuf resetReaderIndex() { - buffer.resetReaderIndex(); - return this; - } - - @Override - public ByteBuf resetWriterIndex() { - throw reject(); - } - @Override public ByteBuf setBoolean(int index, boolean value) { throw reject(); diff --git a/codec/src/main/java/io/netty/handler/codec/compression/Snappy.java b/codec/src/main/java/io/netty/handler/codec/compression/Snappy.java index 9264244641..43af470d79 100644 --- a/codec/src/main/java/io/netty/handler/codec/compression/Snappy.java +++ b/codec/src/main/java/io/netty/handler/codec/compression/Snappy.java @@ -390,7 +390,7 @@ public final class Snappy { * @return The number of bytes appended to the output buffer, or -1 to indicate "try again later" */ static int decodeLiteral(byte tag, ByteBuf in, ByteBuf out) { - in.markReaderIndex(); + int readerIndex = in.readerIndex(); int length; switch(tag >> 2 & 0x3F) { case 60: @@ -423,7 +423,7 @@ public final class Snappy { length += 1; if (in.readableBytes() < length) { - in.resetReaderIndex(); + in.readerIndex(readerIndex); return NOT_ENOUGH_INPUT; } @@ -455,7 +455,7 @@ public final class Snappy { validateOffset(offset, writtenSoFar); - out.markReaderIndex(); + int readerIndex = out.readerIndex(); if (offset < length) { int copies = length / offset; for (; copies > 0; copies--) { @@ -470,7 +470,7 @@ public final class Snappy { out.readerIndex(initialIndex - offset); out.readBytes(out, length); } - out.resetReaderIndex(); + out.readerIndex(readerIndex); return length; } @@ -499,7 +499,7 @@ public final class Snappy { validateOffset(offset, writtenSoFar); - out.markReaderIndex(); + int readerIndex = out.readerIndex(); if (offset < length) { int copies = length / offset; for (; copies > 0; copies--) { @@ -514,7 +514,7 @@ public final class Snappy { out.readerIndex(initialIndex - offset); out.readBytes(out, length); } - out.resetReaderIndex(); + out.readerIndex(readerIndex); return length; } @@ -543,7 +543,7 @@ public final class Snappy { validateOffset(offset, writtenSoFar); - out.markReaderIndex(); + int readerIndex = out.readerIndex(); if (offset < length) { int copies = length / offset; for (; copies > 0; copies--) { @@ -558,7 +558,7 @@ public final class Snappy { out.readerIndex(initialIndex - offset); out.readBytes(out, length); } - out.resetReaderIndex(); + out.readerIndex(readerIndex); return length; } diff --git a/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufVarint32FrameDecoder.java b/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufVarint32FrameDecoder.java index 89e79413d2..994d6b338e 100644 --- a/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufVarint32FrameDecoder.java +++ b/codec/src/main/java/io/netty/handler/codec/protobuf/ProtobufVarint32FrameDecoder.java @@ -48,7 +48,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { - in.markReaderIndex(); + int readerIndex = in.readerIndex(); int preIndex = in.readerIndex(); int length = readRawVarint32(in); if (preIndex == in.readerIndex()) { @@ -59,7 +59,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder { } if (in.readableBytes() < length) { - in.resetReaderIndex(); + in.readerIndex(readerIndex); } else { out.add(in.readRetainedSlice(length)); } @@ -74,14 +74,14 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder { if (!buffer.isReadable()) { return 0; } - buffer.markReaderIndex(); + int readerIndex = buffer.readerIndex(); byte tmp = buffer.readByte(); if (tmp >= 0) { return tmp; } else { int result = tmp & 127; if (!buffer.isReadable()) { - buffer.resetReaderIndex(); + buffer.readerIndex(readerIndex); return 0; } if ((tmp = buffer.readByte()) >= 0) { @@ -89,7 +89,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder { } else { result |= (tmp & 127) << 7; if (!buffer.isReadable()) { - buffer.resetReaderIndex(); + buffer.readerIndex(readerIndex); return 0; } if ((tmp = buffer.readByte()) >= 0) { @@ -97,7 +97,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder { } else { result |= (tmp & 127) << 14; if (!buffer.isReadable()) { - buffer.resetReaderIndex(); + buffer.readerIndex(readerIndex); return 0; } if ((tmp = buffer.readByte()) >= 0) { @@ -105,7 +105,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder { } else { result |= (tmp & 127) << 21; if (!buffer.isReadable()) { - buffer.resetReaderIndex(); + buffer.readerIndex(readerIndex); return 0; } result |= (tmp = buffer.readByte()) << 28; diff --git a/codec/src/test/java/io/netty/handler/codec/compression/AbstractEncoderTest.java b/codec/src/test/java/io/netty/handler/codec/compression/AbstractEncoderTest.java index 71c210f5de..aeecf03f5c 100644 --- a/codec/src/test/java/io/netty/handler/codec/compression/AbstractEncoderTest.java +++ b/codec/src/test/java/io/netty/handler/codec/compression/AbstractEncoderTest.java @@ -88,7 +88,8 @@ public abstract class AbstractEncoderTest extends AbstractCompressionTest { assertTrue(channel.finish()); ByteBuf decompressed = readDecompressed(dataLength); - assertEquals(data.resetReaderIndex(), decompressed); + data.readerIndex(0); + assertEquals(data, decompressed); decompressed.release(); data.release(); diff --git a/codec/src/test/java/io/netty/handler/codec/compression/AbstractIntegrationTest.java b/codec/src/test/java/io/netty/handler/codec/compression/AbstractIntegrationTest.java index 5eaed2f033..a7bfbf1c64 100644 --- a/codec/src/test/java/io/netty/handler/codec/compression/AbstractIntegrationTest.java +++ b/codec/src/test/java/io/netty/handler/codec/compression/AbstractIntegrationTest.java @@ -160,7 +160,8 @@ public abstract class AbstractIntegrationTest { while ((msg = decoder.readInbound()) != null) { decompressed.addComponent(true, msg); } - assertEquals(in.resetReaderIndex(), decompressed); + in.readerIndex(0); + assertEquals(in, decompressed); compressed.release(); decompressed.release(); diff --git a/codec/src/test/java/io/netty/handler/codec/compression/SnappyFrameEncoderTest.java b/codec/src/test/java/io/netty/handler/codec/compression/SnappyFrameEncoderTest.java index 7b61be151a..365e03df28 100644 --- a/codec/src/test/java/io/netty/handler/codec/compression/SnappyFrameEncoderTest.java +++ b/codec/src/test/java/io/netty/handler/codec/compression/SnappyFrameEncoderTest.java @@ -83,7 +83,7 @@ public class SnappyFrameEncoderTest { }); channel.writeOutbound(in.retain()); - in.resetReaderIndex(); // rewind the buffer to write the same data + in.readerIndex(0); // rewind the buffer to write the same data channel.writeOutbound(in); assertTrue(channel.finish()); diff --git a/codec/src/test/java/io/netty/handler/codec/compression/ZlibTest.java b/codec/src/test/java/io/netty/handler/codec/compression/ZlibTest.java index 7c25ec41ec..3c2dd74fa7 100644 --- a/codec/src/test/java/io/netty/handler/codec/compression/ZlibTest.java +++ b/codec/src/test/java/io/netty/handler/codec/compression/ZlibTest.java @@ -118,7 +118,7 @@ public abstract class ZlibTest { try { chEncoder.writeOutbound(data.retain()); chEncoder.flush(); - data.resetReaderIndex(); + data.readerIndex(0); for (;;) { ByteBuf deflatedData = chEncoder.readOutbound(); diff --git a/example/src/main/java/io/netty/example/factorial/BigIntegerDecoder.java b/example/src/main/java/io/netty/example/factorial/BigIntegerDecoder.java index 71bb6e3550..4d564725cc 100644 --- a/example/src/main/java/io/netty/example/factorial/BigIntegerDecoder.java +++ b/example/src/main/java/io/netty/example/factorial/BigIntegerDecoder.java @@ -38,19 +38,19 @@ public class BigIntegerDecoder extends ByteToMessageDecoder { return; } - in.markReaderIndex(); + int readerIndex = in.readerIndex(); // Check the magic number. int magicNumber = in.readUnsignedByte(); if (magicNumber != 'F') { - in.resetReaderIndex(); + in.readerIndex(readerIndex); throw new CorruptedFrameException("Invalid magic number: " + magicNumber); } // Wait until the whole data is available. int dataLength = in.readInt(); if (in.readableBytes() < dataLength) { - in.resetReaderIndex(); + in.readerIndex(readerIndex); return; } diff --git a/handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java b/handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java index c23800162a..81eee148f8 100644 --- a/handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java +++ b/handler/src/test/java/io/netty/handler/ssl/SSLEngineTest.java @@ -1124,7 +1124,7 @@ public abstract class SSLEngineTest { try { assertTrue(sendChannel.writeAndFlush(message).await(5, TimeUnit.SECONDS)); receiverLatch.await(5, TimeUnit.SECONDS); - message.resetReaderIndex(); + message.readerIndex(0); ArgumentCaptor captor = ArgumentCaptor.forClass(ByteBuf.class); verify(receiver).messageReceived(captor.capture()); dataCapture = captor.getAllValues(); diff --git a/microbench/src/main/java/io/netty/handler/codec/http/WriteBytesVsShortOrMediumBenchmark.java b/microbench/src/main/java/io/netty/handler/codec/http/WriteBytesVsShortOrMediumBenchmark.java index cdcb769203..b8a06bcc87 100644 --- a/microbench/src/main/java/io/netty/handler/codec/http/WriteBytesVsShortOrMediumBenchmark.java +++ b/microbench/src/main/java/io/netty/handler/codec/http/WriteBytesVsShortOrMediumBenchmark.java @@ -43,31 +43,31 @@ public class WriteBytesVsShortOrMediumBenchmark extends AbstractMicrobenchmark { @Benchmark public ByteBuf shortInt() { - return ByteBufUtil.writeShortBE(buf, CRLF_SHORT).resetWriterIndex(); + return ByteBufUtil.writeShortBE(buf, CRLF_SHORT).writerIndex(0); } @Benchmark public ByteBuf mediumInt() { - return ByteBufUtil.writeMediumBE(buf, ZERO_CRLF_MEDIUM).resetWriterIndex(); + return ByteBufUtil.writeMediumBE(buf, ZERO_CRLF_MEDIUM).writerIndex(0); } @Benchmark public ByteBuf byteArray2() { - return buf.writeBytes(CRLF).resetWriterIndex(); + return buf.writeBytes(CRLF).writerIndex(0); } @Benchmark public ByteBuf byteArray3() { - return buf.writeBytes(ZERO_CRLF).resetWriterIndex(); + return buf.writeBytes(ZERO_CRLF).writerIndex(0); } @Benchmark public ByteBuf chainedBytes2() { - return buf.writeByte(CR).writeByte(LF).resetWriterIndex(); + return buf.writeByte(CR).writeByte(LF).writerIndex(0); } @Benchmark public ByteBuf chainedBytes3() { - return buf.writeByte('0').writeByte(CR).writeByte(LF).resetWriterIndex(); + return buf.writeByte('0').writeByte(CR).writeByte(LF).writerIndex(0); } } diff --git a/microbench/src/main/java/io/netty/microbench/buffer/ByteBufUtilBenchmark.java b/microbench/src/main/java/io/netty/microbench/buffer/ByteBufUtilBenchmark.java index 12e99cf520..45114acea8 100644 --- a/microbench/src/main/java/io/netty/microbench/buffer/ByteBufUtilBenchmark.java +++ b/microbench/src/main/java/io/netty/microbench/buffer/ByteBufUtilBenchmark.java @@ -79,97 +79,97 @@ public class @Benchmark public void writeAsciiStringViaArray() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); buffer.writeBytes(ascii.getBytes(CharsetUtil.US_ASCII)); } @Benchmark public void writeAsciiStringViaArrayWrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); wrapped.writeBytes(ascii.getBytes(CharsetUtil.US_ASCII)); } @Benchmark public void writeAsciiString() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); ByteBufUtil.writeAscii(buffer, ascii); } @Benchmark public void writeAsciiStringWrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); ByteBufUtil.writeAscii(wrapped, ascii); } @Benchmark public void writeAsciiViaArray() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); buffer.writeBytes(asciiSequence.toString().getBytes(CharsetUtil.US_ASCII)); } @Benchmark public void writeAsciiViaArrayWrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); wrapped.writeBytes(asciiSequence.toString().getBytes(CharsetUtil.US_ASCII)); } @Benchmark public void writeAscii() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); ByteBufUtil.writeAscii(buffer, asciiSequence); } @Benchmark public void writeAsciiWrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); ByteBufUtil.writeAscii(wrapped, asciiSequence); } @Benchmark public void writeUtf8StringViaArray() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); buffer.writeBytes(utf8.getBytes(CharsetUtil.UTF_8)); } @Benchmark public void writeUtf8StringViaArrayWrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); wrapped.writeBytes(utf8.getBytes(CharsetUtil.UTF_8)); } @Benchmark public void writeUtf8String() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); ByteBufUtil.writeUtf8(buffer, utf8); } @Benchmark public void writeUtf8StringWrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); ByteBufUtil.writeUtf8(wrapped, utf8); } @Benchmark public void writeUtf8ViaArray() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); buffer.writeBytes(utf8Sequence.toString().getBytes(CharsetUtil.UTF_8)); } @Benchmark public void writeUtf8ViaArrayWrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); wrapped.writeBytes(utf8Sequence.toString().getBytes(CharsetUtil.UTF_8)); } @Benchmark public void writeUtf8() { - buffer.resetWriterIndex(); + buffer.writerIndex(0); ByteBufUtil.writeUtf8(buffer, utf8Sequence); } @Benchmark public void writeUtf8Wrapped() { - wrapped.resetWriterIndex(); + wrapped.writerIndex(0); ByteBufUtil.writeUtf8(wrapped, utf8Sequence); } diff --git a/microbench/src/main/java/io/netty/microbench/buffer/SlicedByteBufBenchmark.java b/microbench/src/main/java/io/netty/microbench/buffer/SlicedByteBufBenchmark.java index 821fdc3903..7e73398b38 100644 --- a/microbench/src/main/java/io/netty/microbench/buffer/SlicedByteBufBenchmark.java +++ b/microbench/src/main/java/io/netty/microbench/buffer/SlicedByteBufBenchmark.java @@ -63,13 +63,13 @@ public class SlicedByteBufBenchmark extends AbstractMicrobenchmark { @Benchmark public void writeAsciiStringSlice() { - slicedByteBuf.resetWriterIndex(); + slicedByteBuf.writerIndex(0); ByteBufUtil.writeAscii(slicedByteBuf, ascii); } @Benchmark public void writeAsciiStringSliceAbstract() { - slicedAbstractByteBuf.resetWriterIndex(); + slicedAbstractByteBuf.writerIndex(0); ByteBufUtil.writeAscii(slicedAbstractByteBuf, ascii); } } diff --git a/resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java b/resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java index e75f49c8d4..1b97ae5cab 100644 --- a/resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java +++ b/resolver-dns/src/main/java/io/netty/resolver/dns/DnsResolveContext.java @@ -857,14 +857,14 @@ abstract class DnsResolveContext { } static String decodeDomainName(ByteBuf in) { - in.markReaderIndex(); + int readerIndex = in.readerIndex(); try { return DefaultDnsRecordDecoder.decodeName(in); } catch (CorruptedFrameException e) { // In this case we just return null. return null; } finally { - in.resetReaderIndex(); + in.readerIndex(readerIndex); } }