Remove support for marking reader and writerIndex in ByteBuf to reduce overhead and complexity. (#8636)
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.
This commit is contained in:
parent
9c594e5068
commit
d9a6cf341c
@ -68,8 +68,6 @@ public abstract class AbstractByteBuf extends ByteBuf {
|
|||||||
|
|
||||||
int readerIndex;
|
int readerIndex;
|
||||||
int writerIndex;
|
int writerIndex;
|
||||||
private int markedReaderIndex;
|
|
||||||
private int markedWriterIndex;
|
|
||||||
private int maxCapacity;
|
private int maxCapacity;
|
||||||
|
|
||||||
protected AbstractByteBuf(int maxCapacity) {
|
protected AbstractByteBuf(int maxCapacity) {
|
||||||
@ -188,30 +186,6 @@ public abstract class AbstractByteBuf extends ByteBuf {
|
|||||||
return maxCapacity() - writerIndex;
|
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
|
@Override
|
||||||
public ByteBuf discardReadBytes() {
|
public ByteBuf discardReadBytes() {
|
||||||
ensureAccessible();
|
ensureAccessible();
|
||||||
@ -222,10 +196,8 @@ public abstract class AbstractByteBuf extends ByteBuf {
|
|||||||
if (readerIndex != writerIndex) {
|
if (readerIndex != writerIndex) {
|
||||||
setBytes(0, this, readerIndex, writerIndex - readerIndex);
|
setBytes(0, this, readerIndex, writerIndex - readerIndex);
|
||||||
writerIndex -= readerIndex;
|
writerIndex -= readerIndex;
|
||||||
adjustMarkers(readerIndex);
|
|
||||||
readerIndex = 0;
|
readerIndex = 0;
|
||||||
} else {
|
} else {
|
||||||
adjustMarkers(readerIndex);
|
|
||||||
writerIndex = readerIndex = 0;
|
writerIndex = readerIndex = 0;
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
@ -239,7 +211,6 @@ public abstract class AbstractByteBuf extends ByteBuf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (readerIndex == writerIndex) {
|
if (readerIndex == writerIndex) {
|
||||||
adjustMarkers(readerIndex);
|
|
||||||
writerIndex = readerIndex = 0;
|
writerIndex = readerIndex = 0;
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
@ -247,28 +218,11 @@ public abstract class AbstractByteBuf extends ByteBuf {
|
|||||||
if (readerIndex >= capacity() >>> 1) {
|
if (readerIndex >= capacity() >>> 1) {
|
||||||
setBytes(0, this, readerIndex, writerIndex - readerIndex);
|
setBytes(0, this, readerIndex, writerIndex - readerIndex);
|
||||||
writerIndex -= readerIndex;
|
writerIndex -= readerIndex;
|
||||||
adjustMarkers(readerIndex);
|
|
||||||
readerIndex = 0;
|
readerIndex = 0;
|
||||||
}
|
}
|
||||||
return this;
|
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
|
@Override
|
||||||
public ByteBuf ensureWritable(int minWritableBytes) {
|
public ByteBuf ensureWritable(int minWritableBytes) {
|
||||||
if (minWritableBytes < 0) {
|
if (minWritableBytes < 0) {
|
||||||
@ -1463,8 +1417,4 @@ public abstract class AbstractByteBuf extends ByteBuf {
|
|||||||
this.readerIndex = readerIndex;
|
this.readerIndex = readerIndex;
|
||||||
this.writerIndex = writerIndex;
|
this.writerIndex = writerIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
final void discardMarks() {
|
|
||||||
markedReaderIndex = markedWriterIndex = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -183,15 +183,6 @@ import java.nio.charset.UnsupportedCharsetException;
|
|||||||
* For complicated searches, use {@link #forEachByte(int, int, ByteProcessor)} with a {@link ByteProcessor}
|
* For complicated searches, use {@link #forEachByte(int, int, ByteProcessor)} with a {@link ByteProcessor}
|
||||||
* implementation.
|
* implementation.
|
||||||
*
|
*
|
||||||
* <h3>Mark and reset</h3>
|
|
||||||
*
|
|
||||||
* 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}.
|
|
||||||
*
|
|
||||||
* <h3>Derived buffers</h3>
|
* <h3>Derived buffers</h3>
|
||||||
*
|
*
|
||||||
* You can create a view of an existing buffer by calling one of the following methods:
|
* 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;
|
|||||||
* <li>{@link #readRetainedSlice(int)}</li>
|
* <li>{@link #readRetainedSlice(int)}</li>
|
||||||
* </ul>
|
* </ul>
|
||||||
* A derived buffer will have an independent {@link #readerIndex() readerIndex},
|
* 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.
|
* other internal data representation, just like a NIO buffer does.
|
||||||
* <p>
|
* <p>
|
||||||
* In case a completely fresh copy of an existing buffer is required, please
|
* In case a completely fresh copy of an existing buffer is required, please
|
||||||
@ -286,8 +277,8 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a buffer with the specified {@code endianness} which shares the whole region,
|
* 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
|
* indexes of this buffer. Modifying the content, the indexes of the
|
||||||
* returned buffer or this buffer affects each other's content, indexes, and marks. If 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
|
* 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}
|
* return {@code this}. This method does not modify {@code readerIndex} or {@code writerIndex}
|
||||||
* of this buffer.
|
* of this buffer.
|
||||||
@ -458,42 +449,6 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
*/
|
*/
|
||||||
public abstract ByteBuf clear();
|
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}.
|
* Discards the bytes between the 0th index and {@code readerIndex}.
|
||||||
* It moves the bytes between {@code readerIndex} and {@code writerIndex}
|
* It moves the bytes between {@code readerIndex} and {@code writerIndex}
|
||||||
@ -2186,7 +2141,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Returns a slice of this buffer's readable bytes. Modifying the content
|
* Returns a slice of this buffer's readable bytes. Modifying the content
|
||||||
* of the returned buffer or this buffer affects each other's 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())}.
|
* identical to {@code buf.slice(buf.readerIndex(), buf.readableBytes())}.
|
||||||
* This method does not modify {@code readerIndex} or {@code writerIndex} of
|
* This method does not modify {@code readerIndex} or {@code writerIndex} of
|
||||||
* this buffer.
|
* this buffer.
|
||||||
@ -2199,7 +2154,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Returns a retained slice of this buffer's readable bytes. Modifying the content
|
* 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
|
* 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())}.
|
* identical to {@code buf.slice(buf.readerIndex(), buf.readableBytes())}.
|
||||||
* This method does not modify {@code readerIndex} or {@code writerIndex} of
|
* This method does not modify {@code readerIndex} or {@code writerIndex} of
|
||||||
* this buffer.
|
* this buffer.
|
||||||
@ -2213,7 +2168,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Returns a slice of this buffer's sub-region. Modifying the content of
|
* 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
|
* 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 method does not modify {@code readerIndex} or {@code writerIndex} of
|
||||||
* this buffer.
|
* this buffer.
|
||||||
* <p>
|
* <p>
|
||||||
@ -2225,7 +2180,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Returns a retained slice of this buffer's sub-region. Modifying the content of
|
* 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
|
* 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 method does not modify {@code readerIndex} or {@code writerIndex} of
|
||||||
* this buffer.
|
* this buffer.
|
||||||
* <p>
|
* <p>
|
||||||
@ -2238,11 +2193,11 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Returns a buffer which shares the whole region of this buffer.
|
* Returns a buffer which shares the whole region of this buffer.
|
||||||
* Modifying the content of the returned buffer or this buffer affects
|
* 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 method does not modify {@code readerIndex} or {@code writerIndex} of
|
||||||
* this buffer.
|
* this buffer.
|
||||||
* <p>
|
* <p>
|
||||||
* 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.
|
* 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()}.
|
* @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
|
* 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<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Returns a retained buffer which shares the whole region of this buffer.
|
* Returns a retained buffer which shares the whole region of this buffer.
|
||||||
* Modifying the content of the returned buffer or this buffer affects
|
* 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 is identical to {@code buf.slice(0, buf.capacity())}.
|
||||||
* This method does not modify {@code readerIndex} or {@code writerIndex} of
|
* This method does not modify {@code readerIndex} or {@code writerIndex} of
|
||||||
* this buffer.
|
* this buffer.
|
||||||
@ -2282,7 +2237,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Exposes this buffer's readable bytes as an NIO {@link ByteBuffer}. The returned buffer
|
* 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
|
* 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 is identical to {@code buf.nioBuffer(buf.readerIndex(), buf.readableBytes())}.
|
||||||
* This method does not modify {@code readerIndex} or {@code writerIndex} 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
|
* 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<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Exposes this buffer's sub-region as an NIO {@link ByteBuffer}. The returned buffer
|
* 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
|
* 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.
|
* 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
|
* 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.
|
* is a dynamic buffer and it adjusted its capacity.
|
||||||
@ -2322,7 +2277,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Exposes this buffer's readable bytes as an NIO {@link ByteBuffer}'s. The returned buffer
|
* 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
|
* 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.
|
* 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
|
* 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.
|
* is a dynamic buffer and it adjusted its capacity.
|
||||||
@ -2340,7 +2295,7 @@ public abstract class ByteBuf implements ReferenceCounted, Comparable<ByteBuf> {
|
|||||||
/**
|
/**
|
||||||
* Exposes this buffer's bytes as an NIO {@link ByteBuffer}'s for the specified index and length
|
* 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 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
|
* 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
|
* returned NIO buffer will not see the changes of this buffer if this buffer is a dynamic
|
||||||
* buffer and it adjusted its capacity.
|
* buffer and it adjusted its capacity.
|
||||||
|
@ -45,6 +45,8 @@ public class ByteBufInputStream extends InputStream implements DataInput {
|
|||||||
private final int startIndex;
|
private final int startIndex;
|
||||||
private final int endIndex;
|
private final int endIndex;
|
||||||
private boolean closed;
|
private boolean closed;
|
||||||
|
private int markReaderIndex;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* To preserve backwards compatibility (which didn't transfer ownership) we support a conditional flag which
|
* 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.
|
* 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;
|
this.buffer = buffer;
|
||||||
startIndex = buffer.readerIndex();
|
startIndex = buffer.readerIndex();
|
||||||
endIndex = startIndex + length;
|
endIndex = startIndex + length;
|
||||||
buffer.markReaderIndex();
|
markReaderIndex = startIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -153,7 +155,7 @@ public class ByteBufInputStream extends InputStream implements DataInput {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void mark(int readlimit) {
|
public void mark(int readlimit) {
|
||||||
buffer.markReaderIndex();
|
markReaderIndex = buffer.readerIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -183,7 +185,7 @@ public class ByteBufInputStream extends InputStream implements DataInput {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reset() throws IOException {
|
public void reset() throws IOException {
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(markReaderIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1681,7 +1681,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements
|
|||||||
lastAccessed = null;
|
lastAccessed = null;
|
||||||
clearComps();
|
clearComps();
|
||||||
setIndex(0, 0);
|
setIndex(0, 0);
|
||||||
adjustMarkers(readerIndex);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1698,7 +1697,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements
|
|||||||
int offset = first.offset;
|
int offset = first.offset;
|
||||||
updateComponentOffsets(0);
|
updateComponentOffsets(0);
|
||||||
setIndex(readerIndex - offset, writerIndex - offset);
|
setIndex(readerIndex - offset, writerIndex - offset);
|
||||||
adjustMarkers(offset);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1719,7 +1717,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements
|
|||||||
lastAccessed = null;
|
lastAccessed = null;
|
||||||
clearComps();
|
clearComps();
|
||||||
setIndex(0, 0);
|
setIndex(0, 0);
|
||||||
adjustMarkers(readerIndex);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1754,7 +1751,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements
|
|||||||
// Update indexes and markers.
|
// Update indexes and markers.
|
||||||
updateComponentOffsets(0);
|
updateComponentOffsets(0);
|
||||||
setIndex(0, writerIndex - readerIndex);
|
setIndex(0, writerIndex - readerIndex);
|
||||||
adjustMarkers(readerIndex);
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1852,30 +1848,6 @@ public class CompositeByteBuf extends AbstractReferenceCountedByteBuf implements
|
|||||||
return this;
|
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
|
@Override
|
||||||
public CompositeByteBuf ensureWritable(int minWritableBytes) {
|
public CompositeByteBuf ensureWritable(int minWritableBytes) {
|
||||||
super.ensureWritable(minWritableBytes);
|
super.ensureWritable(minWritableBytes);
|
||||||
|
@ -54,8 +54,6 @@ public class DuplicatedByteBuf extends AbstractDerivedByteBuf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
setIndex(readerIndex, writerIndex);
|
setIndex(readerIndex, writerIndex);
|
||||||
markReaderIndex();
|
|
||||||
markWriterIndex();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -191,26 +191,6 @@ public final class EmptyByteBuf extends ByteBuf {
|
|||||||
return this;
|
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
|
@Override
|
||||||
public ByteBuf discardReadBytes() {
|
public ByteBuf discardReadBytes() {
|
||||||
return this;
|
return this;
|
||||||
|
@ -74,7 +74,6 @@ abstract class PooledByteBuf<T> extends AbstractReferenceCountedByteBuf {
|
|||||||
maxCapacity(maxCapacity);
|
maxCapacity(maxCapacity);
|
||||||
setRefCnt(1);
|
setRefCnt(1);
|
||||||
setIndex0(0, 0);
|
setIndex0(0, 0);
|
||||||
discardMarks();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -41,9 +41,6 @@ final class PooledDuplicatedByteBuf extends AbstractPooledDerivedByteBuf {
|
|||||||
int readerIndex, int writerIndex) {
|
int readerIndex, int writerIndex) {
|
||||||
final PooledDuplicatedByteBuf duplicate = RECYCLER.get();
|
final PooledDuplicatedByteBuf duplicate = RECYCLER.get();
|
||||||
duplicate.init(unwrapped, wrapped, readerIndex, writerIndex, unwrapped.maxCapacity());
|
duplicate.init(unwrapped, wrapped, readerIndex, writerIndex, unwrapped.maxCapacity());
|
||||||
duplicate.markReaderIndex();
|
|
||||||
duplicate.markWriterIndex();
|
|
||||||
|
|
||||||
return duplicate;
|
return duplicate;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,6 @@ final class PooledSlicedByteBuf extends AbstractPooledDerivedByteBuf {
|
|||||||
int adjustment, int length) {
|
int adjustment, int length) {
|
||||||
final PooledSlicedByteBuf slice = RECYCLER.get();
|
final PooledSlicedByteBuf slice = RECYCLER.get();
|
||||||
slice.init(unwrapped, wrapped, 0, length, length);
|
slice.init(unwrapped, wrapped, 0, length, length);
|
||||||
slice.discardMarks();
|
|
||||||
slice.adjustment = adjustment;
|
slice.adjustment = adjustment;
|
||||||
|
|
||||||
return slice;
|
return slice;
|
||||||
|
@ -177,30 +177,6 @@ public class SwappedByteBuf extends ByteBuf {
|
|||||||
return this;
|
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
|
@Override
|
||||||
public ByteBuf discardReadBytes() {
|
public ByteBuf discardReadBytes() {
|
||||||
buf.discardReadBytes();
|
buf.discardReadBytes();
|
||||||
|
@ -167,30 +167,6 @@ class WrappedByteBuf extends ByteBuf {
|
|||||||
return this;
|
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
|
@Override
|
||||||
public ByteBuf discardReadBytes() {
|
public ByteBuf discardReadBytes() {
|
||||||
buf.discardReadBytes();
|
buf.discardReadBytes();
|
||||||
|
@ -921,30 +921,6 @@ class WrappedCompositeByteBuf extends CompositeByteBuf {
|
|||||||
return this;
|
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
|
@Override
|
||||||
public CompositeByteBuf ensureWritable(int minWritableBytes) {
|
public CompositeByteBuf ensureWritable(int minWritableBytes) {
|
||||||
wrapped.ensureWritable(minWritableBytes);
|
wrapped.ensureWritable(minWritableBytes);
|
||||||
|
@ -1775,9 +1775,9 @@ public abstract class AbstractByteBufTest {
|
|||||||
|
|
||||||
// Make sure there's no effect if called when readerIndex is 0.
|
// Make sure there's no effect if called when readerIndex is 0.
|
||||||
buffer.readerIndex(CAPACITY / 4);
|
buffer.readerIndex(CAPACITY / 4);
|
||||||
buffer.markReaderIndex();
|
int readerIndex = buffer.readerIndex();
|
||||||
buffer.writerIndex(CAPACITY / 3);
|
buffer.writerIndex(CAPACITY / 3);
|
||||||
buffer.markWriterIndex();
|
int writerIndex = buffer.writerIndex();
|
||||||
buffer.readerIndex(0);
|
buffer.readerIndex(0);
|
||||||
buffer.writerIndex(CAPACITY / 2);
|
buffer.writerIndex(CAPACITY / 2);
|
||||||
buffer.discardReadBytes();
|
buffer.discardReadBytes();
|
||||||
@ -1785,9 +1785,9 @@ public abstract class AbstractByteBufTest {
|
|||||||
assertEquals(0, buffer.readerIndex());
|
assertEquals(0, buffer.readerIndex());
|
||||||
assertEquals(CAPACITY / 2, buffer.writerIndex());
|
assertEquals(CAPACITY / 2, buffer.writerIndex());
|
||||||
assertEquals(copy.slice(0, CAPACITY / 2), buffer.slice(0, CAPACITY / 2));
|
assertEquals(copy.slice(0, CAPACITY / 2), buffer.slice(0, CAPACITY / 2));
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(readerIndex);
|
||||||
assertEquals(CAPACITY / 4, buffer.readerIndex());
|
assertEquals(CAPACITY / 4, buffer.readerIndex());
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(writerIndex);
|
||||||
assertEquals(CAPACITY / 3, buffer.writerIndex());
|
assertEquals(CAPACITY / 3, buffer.writerIndex());
|
||||||
|
|
||||||
// Make sure bytes after writerIndex is not copied.
|
// 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));
|
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();
|
copy.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3742,11 +3737,11 @@ public abstract class AbstractByteBufTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRetainedSliceAndRetainedDuplicateContentIsExpected() {
|
public void testRetainedSliceAndRetainedDuplicateContentIsExpected() {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected1 = newBuffer(6).resetWriterIndex();
|
ByteBuf expected1 = newBuffer(6).writerIndex(0);
|
||||||
ByteBuf expected2 = newBuffer(5).resetWriterIndex();
|
ByteBuf expected2 = newBuffer(5).writerIndex(0);
|
||||||
ByteBuf expected3 = newBuffer(4).resetWriterIndex();
|
ByteBuf expected3 = newBuffer(4).writerIndex(0);
|
||||||
ByteBuf expected4 = newBuffer(3).resetWriterIndex();
|
ByteBuf expected4 = newBuffer(3).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7});
|
expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7});
|
||||||
expected2.writeBytes(new byte[] {3, 4, 5, 6, 7});
|
expected2.writeBytes(new byte[] {3, 4, 5, 6, 7});
|
||||||
@ -3805,10 +3800,10 @@ public abstract class AbstractByteBufTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testRetainedDuplicateAndRetainedSliceContentIsExpected() {
|
public void testRetainedDuplicateAndRetainedSliceContentIsExpected() {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected1 = newBuffer(6).resetWriterIndex();
|
ByteBuf expected1 = newBuffer(6).writerIndex(0);
|
||||||
ByteBuf expected2 = newBuffer(5).resetWriterIndex();
|
ByteBuf expected2 = newBuffer(5).writerIndex(0);
|
||||||
ByteBuf expected3 = newBuffer(4).resetWriterIndex();
|
ByteBuf expected3 = newBuffer(4).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7});
|
expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7});
|
||||||
expected2.writeBytes(new byte[] {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) {
|
private void testSliceContents(boolean retainedSlice) {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected = newBuffer(3).resetWriterIndex();
|
ByteBuf expected = newBuffer(3).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected.writeBytes(new byte[] {4, 5, 6});
|
expected.writeBytes(new byte[] {4, 5, 6});
|
||||||
ByteBuf slice = retainedSlice ? buf.retainedSlice(buf.readerIndex() + 3, 3)
|
ByteBuf slice = retainedSlice ? buf.retainedSlice(buf.readerIndex() + 3, 3)
|
||||||
@ -4180,9 +4175,9 @@ public abstract class AbstractByteBufTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void testSliceReleaseOriginal(boolean retainedSlice1, boolean retainedSlice2) {
|
private void testSliceReleaseOriginal(boolean retainedSlice1, boolean retainedSlice2) {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected1 = newBuffer(3).resetWriterIndex();
|
ByteBuf expected1 = newBuffer(3).writerIndex(0);
|
||||||
ByteBuf expected2 = newBuffer(2).resetWriterIndex();
|
ByteBuf expected2 = newBuffer(2).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected1.writeBytes(new byte[] {6, 7, 8});
|
expected1.writeBytes(new byte[] {6, 7, 8});
|
||||||
expected2.writeBytes(new byte[] {7, 8});
|
expected2.writeBytes(new byte[] {7, 8});
|
||||||
@ -4214,12 +4209,12 @@ public abstract class AbstractByteBufTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void testMultipleLevelRetainedSliceWithNonRetained(boolean doSlice1, boolean doSlice2) {
|
private void testMultipleLevelRetainedSliceWithNonRetained(boolean doSlice1, boolean doSlice2) {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected1 = newBuffer(6).resetWriterIndex();
|
ByteBuf expected1 = newBuffer(6).writerIndex(0);
|
||||||
ByteBuf expected2 = newBuffer(4).resetWriterIndex();
|
ByteBuf expected2 = newBuffer(4).writerIndex(0);
|
||||||
ByteBuf expected3 = newBuffer(2).resetWriterIndex();
|
ByteBuf expected3 = newBuffer(2).writerIndex(0);
|
||||||
ByteBuf expected4SliceSlice = newBuffer(1).resetWriterIndex();
|
ByteBuf expected4SliceSlice = newBuffer(1).writerIndex(0);
|
||||||
ByteBuf expected4DupSlice = newBuffer(1).resetWriterIndex();
|
ByteBuf expected4DupSlice = newBuffer(1).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7});
|
expected1.writeBytes(new byte[] {2, 3, 4, 5, 6, 7});
|
||||||
expected2.writeBytes(new byte[] {3, 4, 5, 6});
|
expected2.writeBytes(new byte[] {3, 4, 5, 6});
|
||||||
@ -4284,8 +4279,8 @@ public abstract class AbstractByteBufTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void testDuplicateReleaseOriginal(boolean retainedDuplicate1, boolean retainedDuplicate2) {
|
private void testDuplicateReleaseOriginal(boolean retainedDuplicate1, boolean retainedDuplicate2) {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected = newBuffer(8).resetWriterIndex();
|
ByteBuf expected = newBuffer(8).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected.writeBytes(buf, buf.readerIndex(), buf.readableBytes());
|
expected.writeBytes(buf, buf.readerIndex(), buf.readableBytes());
|
||||||
ByteBuf dup1 = retainedDuplicate1 ? buf.retainedDuplicate()
|
ByteBuf dup1 = retainedDuplicate1 ? buf.retainedDuplicate()
|
||||||
@ -4315,10 +4310,10 @@ public abstract class AbstractByteBufTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void testMultipleRetainedSliceReleaseOriginal(boolean retainedSlice1, boolean retainedSlice2) {
|
private void testMultipleRetainedSliceReleaseOriginal(boolean retainedSlice1, boolean retainedSlice2) {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected1 = newBuffer(3).resetWriterIndex();
|
ByteBuf expected1 = newBuffer(3).writerIndex(0);
|
||||||
ByteBuf expected2 = newBuffer(2).resetWriterIndex();
|
ByteBuf expected2 = newBuffer(2).writerIndex(0);
|
||||||
ByteBuf expected3 = newBuffer(2).resetWriterIndex();
|
ByteBuf expected3 = newBuffer(2).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected1.writeBytes(new byte[] {6, 7, 8});
|
expected1.writeBytes(new byte[] {6, 7, 8});
|
||||||
expected2.writeBytes(new byte[] {7, 8});
|
expected2.writeBytes(new byte[] {7, 8});
|
||||||
@ -4359,8 +4354,8 @@ public abstract class AbstractByteBufTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void testMultipleRetainedDuplicateReleaseOriginal(boolean retainedDuplicate1, boolean retainedDuplicate2) {
|
private void testMultipleRetainedDuplicateReleaseOriginal(boolean retainedDuplicate1, boolean retainedDuplicate2) {
|
||||||
ByteBuf buf = newBuffer(8).resetWriterIndex();
|
ByteBuf buf = newBuffer(8).writerIndex(0);
|
||||||
ByteBuf expected = newBuffer(8).resetWriterIndex();
|
ByteBuf expected = newBuffer(8).writerIndex(0);
|
||||||
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
expected.writeBytes(buf, buf.readerIndex(), buf.readableBytes());
|
expected.writeBytes(buf, buf.readerIndex(), buf.readableBytes());
|
||||||
ByteBuf dup1 = retainedDuplicate1 ? buf.retainedDuplicate()
|
ByteBuf dup1 = retainedDuplicate1 ? buf.retainedDuplicate()
|
||||||
@ -4406,7 +4401,7 @@ public abstract class AbstractByteBufTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void testDuplicateContents(boolean retainedDuplicate) {
|
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});
|
buf.writeBytes(new byte[] {1, 2, 3, 4, 5, 6, 7, 8});
|
||||||
ByteBuf dup = retainedDuplicate ? buf.retainedDuplicate() : buf.duplicate();
|
ByteBuf dup = retainedDuplicate ? buf.retainedDuplicate() : buf.duplicate();
|
||||||
try {
|
try {
|
||||||
@ -4497,9 +4492,7 @@ public abstract class AbstractByteBufTest {
|
|||||||
|
|
||||||
byte[] bytes = {'a', 'b', 'c', 'd'};
|
byte[] bytes = {'a', 'b', 'c', 'd'};
|
||||||
int len = bytes.length;
|
int len = bytes.length;
|
||||||
ByteBuf buffer = newBuffer(len);
|
ByteBuf buffer = newBuffer(len).writerIndex(0);
|
||||||
buffer.resetReaderIndex();
|
|
||||||
buffer.resetWriterIndex();
|
|
||||||
buffer.writeBytes(bytes);
|
buffer.writeBytes(bytes);
|
||||||
|
|
||||||
int oldReaderIndex = buffer.readerIndex();
|
int oldReaderIndex = buffer.readerIndex();
|
||||||
@ -4507,9 +4500,7 @@ public abstract class AbstractByteBufTest {
|
|||||||
assertEquals(oldReaderIndex + len, buffer.readerIndex());
|
assertEquals(oldReaderIndex + len, buffer.readerIndex());
|
||||||
assertEquals(channelPosition, channel.position());
|
assertEquals(channelPosition, channel.position());
|
||||||
|
|
||||||
ByteBuf buffer2 = newBuffer(len);
|
ByteBuf buffer2 = newBuffer(len).writerIndex(0);
|
||||||
buffer2.resetReaderIndex();
|
|
||||||
buffer2.resetWriterIndex();
|
|
||||||
int oldWriterIndex = buffer2.writerIndex();
|
int oldWriterIndex = buffer2.writerIndex();
|
||||||
assertEquals(len, buffer2.writeBytes(channel, 10, len));
|
assertEquals(len, buffer2.writeBytes(channel, 10, len));
|
||||||
assertEquals(channelPosition, channel.position());
|
assertEquals(channelPosition, channel.position());
|
||||||
@ -4540,9 +4531,7 @@ public abstract class AbstractByteBufTest {
|
|||||||
|
|
||||||
byte[] bytes = {'a', 'b', 'c', 'd'};
|
byte[] bytes = {'a', 'b', 'c', 'd'};
|
||||||
int len = bytes.length;
|
int len = bytes.length;
|
||||||
ByteBuf buffer = newBuffer(len);
|
ByteBuf buffer = newBuffer(len).writerIndex(0);
|
||||||
buffer.resetReaderIndex();
|
|
||||||
buffer.resetWriterIndex();
|
|
||||||
buffer.writeBytes(bytes);
|
buffer.writeBytes(bytes);
|
||||||
|
|
||||||
int oldReaderIndex = buffer.readerIndex();
|
int oldReaderIndex = buffer.readerIndex();
|
||||||
@ -4550,9 +4539,7 @@ public abstract class AbstractByteBufTest {
|
|||||||
assertEquals(oldReaderIndex, buffer.readerIndex());
|
assertEquals(oldReaderIndex, buffer.readerIndex());
|
||||||
assertEquals(channelPosition, channel.position());
|
assertEquals(channelPosition, channel.position());
|
||||||
|
|
||||||
ByteBuf buffer2 = newBuffer(len);
|
ByteBuf buffer2 = newBuffer(len).writerIndex(0);
|
||||||
buffer2.resetReaderIndex();
|
|
||||||
buffer2.resetWriterIndex();
|
|
||||||
int oldWriterIndex = buffer2.writerIndex();
|
int oldWriterIndex = buffer2.writerIndex();
|
||||||
assertEquals(buffer2.setBytes(oldWriterIndex, channel, 10, len), len);
|
assertEquals(buffer2.setBytes(oldWriterIndex, channel, 10, len), len);
|
||||||
assertEquals(channelPosition, channel.position());
|
assertEquals(channelPosition, channel.position());
|
||||||
@ -4866,14 +4853,13 @@ public abstract class AbstractByteBufTest {
|
|||||||
ByteBuf buffer = newBuffer(length);
|
ByteBuf buffer = newBuffer(length);
|
||||||
buffer.setIndex(0, 0);
|
buffer.setIndex(0, 0);
|
||||||
buffer.writeCharSequence(content1, CharsetUtil.US_ASCII);
|
buffer.writeCharSequence(content1, CharsetUtil.US_ASCII);
|
||||||
buffer.markWriterIndex();
|
|
||||||
buffer.skipBytes(content1.length());
|
buffer.skipBytes(content1.length());
|
||||||
buffer.writeCharSequence(content2, CharsetUtil.US_ASCII);
|
buffer.writeCharSequence(content2, CharsetUtil.US_ASCII);
|
||||||
buffer.skipBytes(content2.length());
|
buffer.skipBytes(content2.length());
|
||||||
assertTrue(buffer.readerIndex() <= buffer.writerIndex());
|
assertTrue(buffer.readerIndex() <= buffer.writerIndex());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
buffer.resetWriterIndex();
|
buffer.readerIndex(buffer.writerIndex() + 1);
|
||||||
} finally {
|
} finally {
|
||||||
buffer.release();
|
buffer.release();
|
||||||
}
|
}
|
||||||
|
@ -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 }, 0, 5).order(order),
|
||||||
wrappedBuffer(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 5, 5).order(order));
|
wrappedBuffer(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }, 5, 5).order(order));
|
||||||
a.skipBytes(6);
|
a.skipBytes(6);
|
||||||
a.markReaderIndex();
|
|
||||||
b.skipBytes(6);
|
b.skipBytes(6);
|
||||||
b.markReaderIndex();
|
|
||||||
assertEquals(a.readerIndex(), b.readerIndex());
|
assertEquals(a.readerIndex(), b.readerIndex());
|
||||||
a.readerIndex(a.readerIndex() - 1);
|
a.readerIndex(a.readerIndex() - 1);
|
||||||
b.readerIndex(b.readerIndex() - 1);
|
b.readerIndex(b.readerIndex() - 1);
|
||||||
assertEquals(a.readerIndex(), b.readerIndex());
|
assertEquals(a.readerIndex(), b.readerIndex());
|
||||||
a.writerIndex(a.writerIndex() - 1);
|
a.writerIndex(a.writerIndex() - 1);
|
||||||
a.markWriterIndex();
|
|
||||||
b.writerIndex(b.writerIndex() - 1);
|
b.writerIndex(b.writerIndex() - 1);
|
||||||
b.markWriterIndex();
|
|
||||||
assertEquals(a.writerIndex(), b.writerIndex());
|
assertEquals(a.writerIndex(), b.writerIndex());
|
||||||
a.writerIndex(a.writerIndex() + 1);
|
a.writerIndex(a.writerIndex() + 1);
|
||||||
b.writerIndex(b.writerIndex() + 1);
|
b.writerIndex(b.writerIndex() + 1);
|
||||||
@ -165,12 +161,6 @@ public abstract class AbstractCompositeByteBufTest extends AbstractByteBufTest {
|
|||||||
assertEquals(a.readerIndex(), b.readerIndex());
|
assertEquals(a.readerIndex(), b.readerIndex());
|
||||||
assertEquals(a.writerIndex(), b.writerIndex());
|
assertEquals(a.writerIndex(), b.writerIndex());
|
||||||
assertTrue(ByteBufUtil.equals(a, b));
|
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));
|
assertTrue(ByteBufUtil.equals(a, b));
|
||||||
|
|
||||||
a.release();
|
a.release();
|
||||||
|
@ -31,11 +31,7 @@ public abstract class AbstractPooledByteBufTest extends AbstractByteBufTest {
|
|||||||
protected ByteBuf newBuffer(int length, int maxCapacity) {
|
protected ByteBuf newBuffer(int length, int maxCapacity) {
|
||||||
ByteBuf buffer = alloc(length, maxCapacity);
|
ByteBuf buffer = alloc(length, maxCapacity);
|
||||||
|
|
||||||
// Testing if the writerIndex and readerIndex are correct when allocate and also after we reset the mark.
|
// Testing if the writerIndex and readerIndex are correct when allocate.
|
||||||
assertEquals(0, buffer.writerIndex());
|
|
||||||
assertEquals(0, buffer.readerIndex());
|
|
||||||
buffer.resetReaderIndex();
|
|
||||||
buffer.resetWriterIndex();
|
|
||||||
assertEquals(0, buffer.writerIndex());
|
assertEquals(0, buffer.writerIndex());
|
||||||
assertEquals(0, buffer.readerIndex());
|
assertEquals(0, buffer.readerIndex());
|
||||||
return buffer;
|
return buffer;
|
||||||
|
@ -142,14 +142,14 @@ public class ByteBufUtilTest {
|
|||||||
ByteBuf buf = Unpooled.buffer(2).order(ByteOrder.BIG_ENDIAN);
|
ByteBuf buf = Unpooled.buffer(2).order(ByteOrder.BIG_ENDIAN);
|
||||||
ByteBufUtil.writeShortBE(buf, expected);
|
ByteBufUtil.writeShortBE(buf, expected);
|
||||||
assertEquals(expected, buf.readShort());
|
assertEquals(expected, buf.readShort());
|
||||||
buf.resetReaderIndex();
|
buf.readerIndex(0);
|
||||||
assertEquals(ByteBufUtil.swapShort((short) expected), buf.readShortLE());
|
assertEquals(ByteBufUtil.swapShort((short) expected), buf.readShortLE());
|
||||||
buf.release();
|
buf.release();
|
||||||
|
|
||||||
buf = Unpooled.buffer(2).order(ByteOrder.LITTLE_ENDIAN);
|
buf = Unpooled.buffer(2).order(ByteOrder.LITTLE_ENDIAN);
|
||||||
ByteBufUtil.writeShortBE(buf, expected);
|
ByteBufUtil.writeShortBE(buf, expected);
|
||||||
assertEquals((short) expected, buf.readShortLE());
|
assertEquals((short) expected, buf.readShortLE());
|
||||||
buf.resetReaderIndex();
|
buf.readerIndex(0);
|
||||||
assertEquals(ByteBufUtil.swapShort((short) expected), buf.readShort());
|
assertEquals(ByteBufUtil.swapShort((short) expected), buf.readShort());
|
||||||
buf.release();
|
buf.release();
|
||||||
}
|
}
|
||||||
@ -162,14 +162,14 @@ public class ByteBufUtilTest {
|
|||||||
ByteBuf buf = Unpooled.wrappedBuffer(new byte[2]).order(ByteOrder.BIG_ENDIAN);
|
ByteBuf buf = Unpooled.wrappedBuffer(new byte[2]).order(ByteOrder.BIG_ENDIAN);
|
||||||
ByteBufUtil.setShortBE(buf, 0, shortValue);
|
ByteBufUtil.setShortBE(buf, 0, shortValue);
|
||||||
assertEquals(shortValue, buf.readShort());
|
assertEquals(shortValue, buf.readShort());
|
||||||
buf.resetReaderIndex();
|
buf.readerIndex(0);
|
||||||
assertEquals(ByteBufUtil.swapShort((short) shortValue), buf.readShortLE());
|
assertEquals(ByteBufUtil.swapShort((short) shortValue), buf.readShortLE());
|
||||||
buf.release();
|
buf.release();
|
||||||
|
|
||||||
buf = Unpooled.wrappedBuffer(new byte[2]).order(ByteOrder.LITTLE_ENDIAN);
|
buf = Unpooled.wrappedBuffer(new byte[2]).order(ByteOrder.LITTLE_ENDIAN);
|
||||||
ByteBufUtil.setShortBE(buf, 0, shortValue);
|
ByteBufUtil.setShortBE(buf, 0, shortValue);
|
||||||
assertEquals((short) shortValue, buf.readShortLE());
|
assertEquals((short) shortValue, buf.readShortLE());
|
||||||
buf.resetReaderIndex();
|
buf.readerIndex(0);
|
||||||
assertEquals(ByteBufUtil.swapShort((short) shortValue), buf.readShort());
|
assertEquals(ByteBufUtil.swapShort((short) shortValue), buf.readShort());
|
||||||
buf.release();
|
buf.release();
|
||||||
}
|
}
|
||||||
@ -182,14 +182,14 @@ public class ByteBufUtilTest {
|
|||||||
ByteBuf buf = Unpooled.buffer(4).order(ByteOrder.BIG_ENDIAN);
|
ByteBuf buf = Unpooled.buffer(4).order(ByteOrder.BIG_ENDIAN);
|
||||||
ByteBufUtil.writeMediumBE(buf, mediumValue);
|
ByteBufUtil.writeMediumBE(buf, mediumValue);
|
||||||
assertEquals(mediumValue, buf.readMedium());
|
assertEquals(mediumValue, buf.readMedium());
|
||||||
buf.resetReaderIndex();
|
buf.readerIndex(0);
|
||||||
assertEquals(ByteBufUtil.swapMedium(mediumValue), buf.readMediumLE());
|
assertEquals(ByteBufUtil.swapMedium(mediumValue), buf.readMediumLE());
|
||||||
buf.release();
|
buf.release();
|
||||||
|
|
||||||
buf = Unpooled.buffer(4).order(ByteOrder.LITTLE_ENDIAN);
|
buf = Unpooled.buffer(4).order(ByteOrder.LITTLE_ENDIAN);
|
||||||
ByteBufUtil.writeMediumBE(buf, mediumValue);
|
ByteBufUtil.writeMediumBE(buf, mediumValue);
|
||||||
assertEquals(mediumValue, buf.readMediumLE());
|
assertEquals(mediumValue, buf.readMediumLE());
|
||||||
buf.resetReaderIndex();
|
buf.readerIndex(0);
|
||||||
assertEquals(ByteBufUtil.swapMedium(mediumValue), buf.readMedium());
|
assertEquals(ByteBufUtil.swapMedium(mediumValue), buf.readMedium());
|
||||||
buf.release();
|
buf.release();
|
||||||
}
|
}
|
||||||
|
@ -50,26 +50,4 @@ public class DuplicatedByteBufTest extends AbstractByteBufTest {
|
|||||||
|
|
||||||
assertEquals((byte) 0, buffer.readByte());
|
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -147,23 +147,21 @@ public class SlicedByteBufTest extends AbstractByteBufTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testReaderIndexAndMarks() {
|
public void testReaderIndex() {
|
||||||
ByteBuf wrapped = Unpooled.buffer(16);
|
ByteBuf wrapped = Unpooled.buffer(16);
|
||||||
try {
|
try {
|
||||||
wrapped.writerIndex(14);
|
wrapped.writerIndex(14);
|
||||||
wrapped.readerIndex(2);
|
wrapped.readerIndex(2);
|
||||||
wrapped.markWriterIndex();
|
|
||||||
wrapped.markReaderIndex();
|
|
||||||
ByteBuf slice = wrapped.slice(4, 4);
|
ByteBuf slice = wrapped.slice(4, 4);
|
||||||
assertEquals(0, slice.readerIndex());
|
assertEquals(0, slice.readerIndex());
|
||||||
assertEquals(4, slice.writerIndex());
|
assertEquals(4, slice.writerIndex());
|
||||||
|
|
||||||
slice.readerIndex(slice.readerIndex() + 1);
|
slice.readerIndex(slice.readerIndex() + 1);
|
||||||
slice.resetReaderIndex();
|
slice.readerIndex(0);
|
||||||
assertEquals(0, slice.readerIndex());
|
assertEquals(0, slice.readerIndex());
|
||||||
|
|
||||||
slice.writerIndex(slice.writerIndex() - 1);
|
slice.writerIndex(slice.writerIndex() - 1);
|
||||||
slice.resetWriterIndex();
|
slice.writerIndex(0);
|
||||||
assertEquals(0, slice.writerIndex());
|
assertEquals(0, slice.writerIndex());
|
||||||
} finally {
|
} finally {
|
||||||
wrapped.release();
|
wrapped.release();
|
||||||
|
@ -41,8 +41,8 @@ public class HttpRequestEncoderTest {
|
|||||||
return new ByteBuf[]{
|
return new ByteBuf[]{
|
||||||
Unpooled.buffer(128).order(ByteOrder.BIG_ENDIAN),
|
Unpooled.buffer(128).order(ByteOrder.BIG_ENDIAN),
|
||||||
Unpooled.buffer(128).order(ByteOrder.LITTLE_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.BIG_ENDIAN)).writerIndex(0),
|
||||||
Unpooled.wrappedBuffer(ByteBuffer.allocate(128).order(ByteOrder.LITTLE_ENDIAN)).resetWriterIndex()
|
Unpooled.wrappedBuffer(ByteBuffer.allocate(128).order(ByteOrder.LITTLE_ENDIAN)).writerIndex(0)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ public class DataCompressionHttp2Test {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
awaitServer();
|
awaitServer();
|
||||||
assertEquals(data.resetReaderIndex().toString(CharsetUtil.UTF_8),
|
assertEquals(data.readerIndex(0).toString(CharsetUtil.UTF_8),
|
||||||
serverOut.toString(CharsetUtil.UTF_8.name()));
|
serverOut.toString(CharsetUtil.UTF_8.name()));
|
||||||
} finally {
|
} finally {
|
||||||
data.release();
|
data.release();
|
||||||
|
@ -200,7 +200,7 @@ public class Http2MultiplexCodecBuilderTest {
|
|||||||
Http2DataFrame dataFrame = serverLastInboundHandler.blockingReadInbound();
|
Http2DataFrame dataFrame = serverLastInboundHandler.blockingReadInbound();
|
||||||
assertNotNull(dataFrame);
|
assertNotNull(dataFrame);
|
||||||
assertEquals(3, dataFrame.stream().id());
|
assertEquals(3, dataFrame.stream().id());
|
||||||
assertEquals(data.resetReaderIndex(), dataFrame.content());
|
assertEquals(data.readerIndex(0), dataFrame.content());
|
||||||
assertTrue(dataFrame.isEndStream());
|
assertTrue(dataFrame.isEndStream());
|
||||||
dataFrame.release();
|
dataFrame.release();
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ public class SocksCmdRequestTest {
|
|||||||
ByteBuf buffer = Unpooled.buffer(16);
|
ByteBuf buffer = Unpooled.buffer(16);
|
||||||
rq.encodeAsByteBuf(buffer);
|
rq.encodeAsByteBuf(buffer);
|
||||||
|
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(0);
|
||||||
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
||||||
assertEquals(SocksCmdType.BIND.byteValue(), buffer.readByte());
|
assertEquals(SocksCmdType.BIND.byteValue(), buffer.readByte());
|
||||||
assertEquals((byte) 0x00, buffer.readByte());
|
assertEquals((byte) 0x00, buffer.readByte());
|
||||||
@ -111,7 +111,7 @@ public class SocksCmdRequestTest {
|
|||||||
ByteBuf buffer = Unpooled.buffer(24);
|
ByteBuf buffer = Unpooled.buffer(24);
|
||||||
rq.encodeAsByteBuf(buffer);
|
rq.encodeAsByteBuf(buffer);
|
||||||
|
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(0);
|
||||||
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
||||||
assertEquals(SocksCmdType.BIND.byteValue(), buffer.readByte());
|
assertEquals(SocksCmdType.BIND.byteValue(), buffer.readByte());
|
||||||
assertEquals((byte) 0x00, buffer.readByte());
|
assertEquals((byte) 0x00, buffer.readByte());
|
||||||
|
@ -123,7 +123,7 @@ public class SocksCmdResponseTest {
|
|||||||
ByteBuf buffer = Unpooled.buffer(16);
|
ByteBuf buffer = Unpooled.buffer(16);
|
||||||
rs.encodeAsByteBuf(buffer);
|
rs.encodeAsByteBuf(buffer);
|
||||||
|
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(0);
|
||||||
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
||||||
assertEquals(SocksCmdStatus.SUCCESS.byteValue(), buffer.readByte());
|
assertEquals(SocksCmdStatus.SUCCESS.byteValue(), buffer.readByte());
|
||||||
assertEquals((byte) 0x00, buffer.readByte());
|
assertEquals((byte) 0x00, buffer.readByte());
|
||||||
@ -145,7 +145,7 @@ public class SocksCmdResponseTest {
|
|||||||
ByteBuf buffer = Unpooled.buffer(24);
|
ByteBuf buffer = Unpooled.buffer(24);
|
||||||
rs.encodeAsByteBuf(buffer);
|
rs.encodeAsByteBuf(buffer);
|
||||||
|
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(0);
|
||||||
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
assertEquals(SocksProtocolVersion.SOCKS5.byteValue(), buffer.readByte());
|
||||||
assertEquals(SocksCmdStatus.SUCCESS.byteValue(), buffer.readByte());
|
assertEquals(SocksCmdStatus.SUCCESS.byteValue(), buffer.readByte());
|
||||||
assertEquals((byte) 0x00, buffer.readByte());
|
assertEquals((byte) 0x00, buffer.readByte());
|
||||||
|
@ -58,7 +58,7 @@ public class StompSubframeEncoderTest {
|
|||||||
aggregatedBuffer.writeBytes(byteBuf);
|
aggregatedBuffer.writeBytes(byteBuf);
|
||||||
byteBuf.release();
|
byteBuf.release();
|
||||||
|
|
||||||
aggregatedBuffer.resetReaderIndex();
|
aggregatedBuffer.readerIndex(0);
|
||||||
String content = aggregatedBuffer.toString(CharsetUtil.UTF_8);
|
String content = aggregatedBuffer.toString(CharsetUtil.UTF_8);
|
||||||
assertEquals(StompTestConstants.CONNECT_FRAME, content);
|
assertEquals(StompTestConstants.CONNECT_FRAME, content);
|
||||||
aggregatedBuffer.release();
|
aggregatedBuffer.release();
|
||||||
|
@ -454,17 +454,6 @@ final class ReplayingDecoderByteBuf extends ByteBuf {
|
|||||||
return buffer.forEachByteDesc(index, length, processor);
|
return buffer.forEachByteDesc(index, length, processor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ByteBuf markReaderIndex() {
|
|
||||||
buffer.markReaderIndex();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ByteBuf markWriterIndex() {
|
|
||||||
throw reject();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ByteOrder order() {
|
public ByteOrder order() {
|
||||||
return buffer.order();
|
return buffer.order();
|
||||||
@ -713,17 +702,6 @@ final class ReplayingDecoderByteBuf extends ByteBuf {
|
|||||||
return buffer.readCharSequence(length, charset);
|
return buffer.readCharSequence(length, charset);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public ByteBuf resetReaderIndex() {
|
|
||||||
buffer.resetReaderIndex();
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ByteBuf resetWriterIndex() {
|
|
||||||
throw reject();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ByteBuf setBoolean(int index, boolean value) {
|
public ByteBuf setBoolean(int index, boolean value) {
|
||||||
throw reject();
|
throw reject();
|
||||||
|
@ -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"
|
* @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) {
|
static int decodeLiteral(byte tag, ByteBuf in, ByteBuf out) {
|
||||||
in.markReaderIndex();
|
int readerIndex = in.readerIndex();
|
||||||
int length;
|
int length;
|
||||||
switch(tag >> 2 & 0x3F) {
|
switch(tag >> 2 & 0x3F) {
|
||||||
case 60:
|
case 60:
|
||||||
@ -423,7 +423,7 @@ public final class Snappy {
|
|||||||
length += 1;
|
length += 1;
|
||||||
|
|
||||||
if (in.readableBytes() < length) {
|
if (in.readableBytes() < length) {
|
||||||
in.resetReaderIndex();
|
in.readerIndex(readerIndex);
|
||||||
return NOT_ENOUGH_INPUT;
|
return NOT_ENOUGH_INPUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -455,7 +455,7 @@ public final class Snappy {
|
|||||||
|
|
||||||
validateOffset(offset, writtenSoFar);
|
validateOffset(offset, writtenSoFar);
|
||||||
|
|
||||||
out.markReaderIndex();
|
int readerIndex = out.readerIndex();
|
||||||
if (offset < length) {
|
if (offset < length) {
|
||||||
int copies = length / offset;
|
int copies = length / offset;
|
||||||
for (; copies > 0; copies--) {
|
for (; copies > 0; copies--) {
|
||||||
@ -470,7 +470,7 @@ public final class Snappy {
|
|||||||
out.readerIndex(initialIndex - offset);
|
out.readerIndex(initialIndex - offset);
|
||||||
out.readBytes(out, length);
|
out.readBytes(out, length);
|
||||||
}
|
}
|
||||||
out.resetReaderIndex();
|
out.readerIndex(readerIndex);
|
||||||
|
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
@ -499,7 +499,7 @@ public final class Snappy {
|
|||||||
|
|
||||||
validateOffset(offset, writtenSoFar);
|
validateOffset(offset, writtenSoFar);
|
||||||
|
|
||||||
out.markReaderIndex();
|
int readerIndex = out.readerIndex();
|
||||||
if (offset < length) {
|
if (offset < length) {
|
||||||
int copies = length / offset;
|
int copies = length / offset;
|
||||||
for (; copies > 0; copies--) {
|
for (; copies > 0; copies--) {
|
||||||
@ -514,7 +514,7 @@ public final class Snappy {
|
|||||||
out.readerIndex(initialIndex - offset);
|
out.readerIndex(initialIndex - offset);
|
||||||
out.readBytes(out, length);
|
out.readBytes(out, length);
|
||||||
}
|
}
|
||||||
out.resetReaderIndex();
|
out.readerIndex(readerIndex);
|
||||||
|
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
@ -543,7 +543,7 @@ public final class Snappy {
|
|||||||
|
|
||||||
validateOffset(offset, writtenSoFar);
|
validateOffset(offset, writtenSoFar);
|
||||||
|
|
||||||
out.markReaderIndex();
|
int readerIndex = out.readerIndex();
|
||||||
if (offset < length) {
|
if (offset < length) {
|
||||||
int copies = length / offset;
|
int copies = length / offset;
|
||||||
for (; copies > 0; copies--) {
|
for (; copies > 0; copies--) {
|
||||||
@ -558,7 +558,7 @@ public final class Snappy {
|
|||||||
out.readerIndex(initialIndex - offset);
|
out.readerIndex(initialIndex - offset);
|
||||||
out.readBytes(out, length);
|
out.readBytes(out, length);
|
||||||
}
|
}
|
||||||
out.resetReaderIndex();
|
out.readerIndex(readerIndex);
|
||||||
|
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder {
|
|||||||
@Override
|
@Override
|
||||||
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out)
|
protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out)
|
||||||
throws Exception {
|
throws Exception {
|
||||||
in.markReaderIndex();
|
int readerIndex = in.readerIndex();
|
||||||
int preIndex = in.readerIndex();
|
int preIndex = in.readerIndex();
|
||||||
int length = readRawVarint32(in);
|
int length = readRawVarint32(in);
|
||||||
if (preIndex == in.readerIndex()) {
|
if (preIndex == in.readerIndex()) {
|
||||||
@ -59,7 +59,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (in.readableBytes() < length) {
|
if (in.readableBytes() < length) {
|
||||||
in.resetReaderIndex();
|
in.readerIndex(readerIndex);
|
||||||
} else {
|
} else {
|
||||||
out.add(in.readRetainedSlice(length));
|
out.add(in.readRetainedSlice(length));
|
||||||
}
|
}
|
||||||
@ -74,14 +74,14 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder {
|
|||||||
if (!buffer.isReadable()) {
|
if (!buffer.isReadable()) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
buffer.markReaderIndex();
|
int readerIndex = buffer.readerIndex();
|
||||||
byte tmp = buffer.readByte();
|
byte tmp = buffer.readByte();
|
||||||
if (tmp >= 0) {
|
if (tmp >= 0) {
|
||||||
return tmp;
|
return tmp;
|
||||||
} else {
|
} else {
|
||||||
int result = tmp & 127;
|
int result = tmp & 127;
|
||||||
if (!buffer.isReadable()) {
|
if (!buffer.isReadable()) {
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(readerIndex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ((tmp = buffer.readByte()) >= 0) {
|
if ((tmp = buffer.readByte()) >= 0) {
|
||||||
@ -89,7 +89,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder {
|
|||||||
} else {
|
} else {
|
||||||
result |= (tmp & 127) << 7;
|
result |= (tmp & 127) << 7;
|
||||||
if (!buffer.isReadable()) {
|
if (!buffer.isReadable()) {
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(readerIndex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ((tmp = buffer.readByte()) >= 0) {
|
if ((tmp = buffer.readByte()) >= 0) {
|
||||||
@ -97,7 +97,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder {
|
|||||||
} else {
|
} else {
|
||||||
result |= (tmp & 127) << 14;
|
result |= (tmp & 127) << 14;
|
||||||
if (!buffer.isReadable()) {
|
if (!buffer.isReadable()) {
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(readerIndex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if ((tmp = buffer.readByte()) >= 0) {
|
if ((tmp = buffer.readByte()) >= 0) {
|
||||||
@ -105,7 +105,7 @@ public class ProtobufVarint32FrameDecoder extends ByteToMessageDecoder {
|
|||||||
} else {
|
} else {
|
||||||
result |= (tmp & 127) << 21;
|
result |= (tmp & 127) << 21;
|
||||||
if (!buffer.isReadable()) {
|
if (!buffer.isReadable()) {
|
||||||
buffer.resetReaderIndex();
|
buffer.readerIndex(readerIndex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
result |= (tmp = buffer.readByte()) << 28;
|
result |= (tmp = buffer.readByte()) << 28;
|
||||||
|
@ -88,7 +88,8 @@ public abstract class AbstractEncoderTest extends AbstractCompressionTest {
|
|||||||
assertTrue(channel.finish());
|
assertTrue(channel.finish());
|
||||||
|
|
||||||
ByteBuf decompressed = readDecompressed(dataLength);
|
ByteBuf decompressed = readDecompressed(dataLength);
|
||||||
assertEquals(data.resetReaderIndex(), decompressed);
|
data.readerIndex(0);
|
||||||
|
assertEquals(data, decompressed);
|
||||||
|
|
||||||
decompressed.release();
|
decompressed.release();
|
||||||
data.release();
|
data.release();
|
||||||
|
@ -160,7 +160,8 @@ public abstract class AbstractIntegrationTest {
|
|||||||
while ((msg = decoder.readInbound()) != null) {
|
while ((msg = decoder.readInbound()) != null) {
|
||||||
decompressed.addComponent(true, msg);
|
decompressed.addComponent(true, msg);
|
||||||
}
|
}
|
||||||
assertEquals(in.resetReaderIndex(), decompressed);
|
in.readerIndex(0);
|
||||||
|
assertEquals(in, decompressed);
|
||||||
|
|
||||||
compressed.release();
|
compressed.release();
|
||||||
decompressed.release();
|
decompressed.release();
|
||||||
|
@ -83,7 +83,7 @@ public class SnappyFrameEncoderTest {
|
|||||||
});
|
});
|
||||||
|
|
||||||
channel.writeOutbound(in.retain());
|
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);
|
channel.writeOutbound(in);
|
||||||
assertTrue(channel.finish());
|
assertTrue(channel.finish());
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ public abstract class ZlibTest {
|
|||||||
try {
|
try {
|
||||||
chEncoder.writeOutbound(data.retain());
|
chEncoder.writeOutbound(data.retain());
|
||||||
chEncoder.flush();
|
chEncoder.flush();
|
||||||
data.resetReaderIndex();
|
data.readerIndex(0);
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
ByteBuf deflatedData = chEncoder.readOutbound();
|
ByteBuf deflatedData = chEncoder.readOutbound();
|
||||||
|
@ -38,19 +38,19 @@ public class BigIntegerDecoder extends ByteToMessageDecoder {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
in.markReaderIndex();
|
int readerIndex = in.readerIndex();
|
||||||
|
|
||||||
// Check the magic number.
|
// Check the magic number.
|
||||||
int magicNumber = in.readUnsignedByte();
|
int magicNumber = in.readUnsignedByte();
|
||||||
if (magicNumber != 'F') {
|
if (magicNumber != 'F') {
|
||||||
in.resetReaderIndex();
|
in.readerIndex(readerIndex);
|
||||||
throw new CorruptedFrameException("Invalid magic number: " + magicNumber);
|
throw new CorruptedFrameException("Invalid magic number: " + magicNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait until the whole data is available.
|
// Wait until the whole data is available.
|
||||||
int dataLength = in.readInt();
|
int dataLength = in.readInt();
|
||||||
if (in.readableBytes() < dataLength) {
|
if (in.readableBytes() < dataLength) {
|
||||||
in.resetReaderIndex();
|
in.readerIndex(readerIndex);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1124,7 +1124,7 @@ public abstract class SSLEngineTest {
|
|||||||
try {
|
try {
|
||||||
assertTrue(sendChannel.writeAndFlush(message).await(5, TimeUnit.SECONDS));
|
assertTrue(sendChannel.writeAndFlush(message).await(5, TimeUnit.SECONDS));
|
||||||
receiverLatch.await(5, TimeUnit.SECONDS);
|
receiverLatch.await(5, TimeUnit.SECONDS);
|
||||||
message.resetReaderIndex();
|
message.readerIndex(0);
|
||||||
ArgumentCaptor<ByteBuf> captor = ArgumentCaptor.forClass(ByteBuf.class);
|
ArgumentCaptor<ByteBuf> captor = ArgumentCaptor.forClass(ByteBuf.class);
|
||||||
verify(receiver).messageReceived(captor.capture());
|
verify(receiver).messageReceived(captor.capture());
|
||||||
dataCapture = captor.getAllValues();
|
dataCapture = captor.getAllValues();
|
||||||
|
@ -43,31 +43,31 @@ public class WriteBytesVsShortOrMediumBenchmark extends AbstractMicrobenchmark {
|
|||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public ByteBuf shortInt() {
|
public ByteBuf shortInt() {
|
||||||
return ByteBufUtil.writeShortBE(buf, CRLF_SHORT).resetWriterIndex();
|
return ByteBufUtil.writeShortBE(buf, CRLF_SHORT).writerIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public ByteBuf mediumInt() {
|
public ByteBuf mediumInt() {
|
||||||
return ByteBufUtil.writeMediumBE(buf, ZERO_CRLF_MEDIUM).resetWriterIndex();
|
return ByteBufUtil.writeMediumBE(buf, ZERO_CRLF_MEDIUM).writerIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public ByteBuf byteArray2() {
|
public ByteBuf byteArray2() {
|
||||||
return buf.writeBytes(CRLF).resetWriterIndex();
|
return buf.writeBytes(CRLF).writerIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public ByteBuf byteArray3() {
|
public ByteBuf byteArray3() {
|
||||||
return buf.writeBytes(ZERO_CRLF).resetWriterIndex();
|
return buf.writeBytes(ZERO_CRLF).writerIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public ByteBuf chainedBytes2() {
|
public ByteBuf chainedBytes2() {
|
||||||
return buf.writeByte(CR).writeByte(LF).resetWriterIndex();
|
return buf.writeByte(CR).writeByte(LF).writerIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public ByteBuf chainedBytes3() {
|
public ByteBuf chainedBytes3() {
|
||||||
return buf.writeByte('0').writeByte(CR).writeByte(LF).resetWriterIndex();
|
return buf.writeByte('0').writeByte(CR).writeByte(LF).writerIndex(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,97 +79,97 @@ public class
|
|||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiStringViaArray() {
|
public void writeAsciiStringViaArray() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
buffer.writeBytes(ascii.getBytes(CharsetUtil.US_ASCII));
|
buffer.writeBytes(ascii.getBytes(CharsetUtil.US_ASCII));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiStringViaArrayWrapped() {
|
public void writeAsciiStringViaArrayWrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
wrapped.writeBytes(ascii.getBytes(CharsetUtil.US_ASCII));
|
wrapped.writeBytes(ascii.getBytes(CharsetUtil.US_ASCII));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiString() {
|
public void writeAsciiString() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
ByteBufUtil.writeAscii(buffer, ascii);
|
ByteBufUtil.writeAscii(buffer, ascii);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiStringWrapped() {
|
public void writeAsciiStringWrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
ByteBufUtil.writeAscii(wrapped, ascii);
|
ByteBufUtil.writeAscii(wrapped, ascii);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiViaArray() {
|
public void writeAsciiViaArray() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
buffer.writeBytes(asciiSequence.toString().getBytes(CharsetUtil.US_ASCII));
|
buffer.writeBytes(asciiSequence.toString().getBytes(CharsetUtil.US_ASCII));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiViaArrayWrapped() {
|
public void writeAsciiViaArrayWrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
wrapped.writeBytes(asciiSequence.toString().getBytes(CharsetUtil.US_ASCII));
|
wrapped.writeBytes(asciiSequence.toString().getBytes(CharsetUtil.US_ASCII));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAscii() {
|
public void writeAscii() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
ByteBufUtil.writeAscii(buffer, asciiSequence);
|
ByteBufUtil.writeAscii(buffer, asciiSequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiWrapped() {
|
public void writeAsciiWrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
ByteBufUtil.writeAscii(wrapped, asciiSequence);
|
ByteBufUtil.writeAscii(wrapped, asciiSequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8StringViaArray() {
|
public void writeUtf8StringViaArray() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
buffer.writeBytes(utf8.getBytes(CharsetUtil.UTF_8));
|
buffer.writeBytes(utf8.getBytes(CharsetUtil.UTF_8));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8StringViaArrayWrapped() {
|
public void writeUtf8StringViaArrayWrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
wrapped.writeBytes(utf8.getBytes(CharsetUtil.UTF_8));
|
wrapped.writeBytes(utf8.getBytes(CharsetUtil.UTF_8));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8String() {
|
public void writeUtf8String() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
ByteBufUtil.writeUtf8(buffer, utf8);
|
ByteBufUtil.writeUtf8(buffer, utf8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8StringWrapped() {
|
public void writeUtf8StringWrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
ByteBufUtil.writeUtf8(wrapped, utf8);
|
ByteBufUtil.writeUtf8(wrapped, utf8);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8ViaArray() {
|
public void writeUtf8ViaArray() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
buffer.writeBytes(utf8Sequence.toString().getBytes(CharsetUtil.UTF_8));
|
buffer.writeBytes(utf8Sequence.toString().getBytes(CharsetUtil.UTF_8));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8ViaArrayWrapped() {
|
public void writeUtf8ViaArrayWrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
wrapped.writeBytes(utf8Sequence.toString().getBytes(CharsetUtil.UTF_8));
|
wrapped.writeBytes(utf8Sequence.toString().getBytes(CharsetUtil.UTF_8));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8() {
|
public void writeUtf8() {
|
||||||
buffer.resetWriterIndex();
|
buffer.writerIndex(0);
|
||||||
ByteBufUtil.writeUtf8(buffer, utf8Sequence);
|
ByteBufUtil.writeUtf8(buffer, utf8Sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeUtf8Wrapped() {
|
public void writeUtf8Wrapped() {
|
||||||
wrapped.resetWriterIndex();
|
wrapped.writerIndex(0);
|
||||||
ByteBufUtil.writeUtf8(wrapped, utf8Sequence);
|
ByteBufUtil.writeUtf8(wrapped, utf8Sequence);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,13 +63,13 @@ public class SlicedByteBufBenchmark extends AbstractMicrobenchmark {
|
|||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiStringSlice() {
|
public void writeAsciiStringSlice() {
|
||||||
slicedByteBuf.resetWriterIndex();
|
slicedByteBuf.writerIndex(0);
|
||||||
ByteBufUtil.writeAscii(slicedByteBuf, ascii);
|
ByteBufUtil.writeAscii(slicedByteBuf, ascii);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Benchmark
|
@Benchmark
|
||||||
public void writeAsciiStringSliceAbstract() {
|
public void writeAsciiStringSliceAbstract() {
|
||||||
slicedAbstractByteBuf.resetWriterIndex();
|
slicedAbstractByteBuf.writerIndex(0);
|
||||||
ByteBufUtil.writeAscii(slicedAbstractByteBuf, ascii);
|
ByteBufUtil.writeAscii(slicedAbstractByteBuf, ascii);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -857,14 +857,14 @@ abstract class DnsResolveContext<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static String decodeDomainName(ByteBuf in) {
|
static String decodeDomainName(ByteBuf in) {
|
||||||
in.markReaderIndex();
|
int readerIndex = in.readerIndex();
|
||||||
try {
|
try {
|
||||||
return DefaultDnsRecordDecoder.decodeName(in);
|
return DefaultDnsRecordDecoder.decodeName(in);
|
||||||
} catch (CorruptedFrameException e) {
|
} catch (CorruptedFrameException e) {
|
||||||
// In this case we just return null.
|
// In this case we just return null.
|
||||||
return null;
|
return null;
|
||||||
} finally {
|
} finally {
|
||||||
in.resetReaderIndex();
|
in.readerIndex(readerIndex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user