public class EmptyChannelBuffer extends BigEndianHeapChannelBuffer
ChannelBuffers.EMPTY_BUFFER
and returned by ChannelBuffers.buffer(int)
etc when
an empty buffer is requested.
Note: For backwards compatibility, this class extends BigEndianHeapChannelBuffer
.
However, it never makes any writes to the reader and writer indices, which avoids contention
when the singleton instance is used concurrently.
array
限定符和类型 | 方法和说明 |
---|---|
protected void |
checkReadableBytes(int length)
Throws an
IndexOutOfBoundsException the length is not 0. |
void |
clear()
Sets the
readerIndex and writerIndex of this buffer to
0 . |
void |
discardReadBytes()
Discards the bytes between the 0th index and
readerIndex . |
void |
markReaderIndex()
Marks the current
readerIndex in this buffer. |
void |
markWriterIndex()
Marks the current
writerIndex in this buffer. |
void |
readBytes(byte[] dst)
Transfers this buffer's data to the specified destination starting at
the current
readerIndex and increases the readerIndex
by the number of the transferred bytes (= dst.length ). |
void |
readBytes(byte[] dst,
int dstIndex,
int length)
Transfers this buffer's data to the specified destination starting at
the current
readerIndex and increases the readerIndex
by the number of the transferred bytes (= length ). |
void |
readBytes(java.nio.ByteBuffer dst)
Transfers this buffer's data to the specified destination starting at
the current
readerIndex until the destination's position
reaches its limit, and increases the readerIndex by the
number of the transferred bytes. |
void |
readBytes(ChannelBuffer dst)
Transfers this buffer's data to the specified destination starting at
the current
readerIndex until the destination becomes
non-writable, and increases the readerIndex by the number of the
transferred bytes. |
void |
readBytes(ChannelBuffer dst,
int length)
Transfers this buffer's data to the specified destination starting at
the current
readerIndex and increases the readerIndex
by the number of the transferred bytes (= length ). |
void |
readBytes(ChannelBuffer dst,
int dstIndex,
int length)
Transfers this buffer's data to the specified destination starting at
the current
readerIndex and increases the readerIndex
by the number of the transferred bytes (= length ). |
int |
readBytes(java.nio.channels.GatheringByteChannel out,
int length)
Transfers this buffer's data to the specified stream starting at the
current
readerIndex . |
ChannelBuffer |
readBytes(int length)
Transfers this buffer's data to a newly created buffer starting at
the current
readerIndex and increases the readerIndex
by the number of the transferred bytes (= length ). |
void |
readBytes(java.io.OutputStream out,
int length)
Transfers this buffer's data to the specified stream starting at the
current
readerIndex . |
void |
readerIndex(int readerIndex)
Sets the
readerIndex of this buffer. |
ChannelBuffer |
readSlice(int length)
Returns a new slice of this buffer's sub-region starting at the current
readerIndex and increases the readerIndex by the size
of the new slice (= length ). |
void |
resetReaderIndex()
Repositions the current
readerIndex to the marked
readerIndex in this buffer. |
void |
resetWriterIndex()
Repositions the current
writerIndex to the marked
writerIndex in this buffer. |
void |
setIndex(int readerIndex,
int writerIndex)
Sets the
readerIndex and writerIndex of this buffer
in one shot. |
void |
skipBytes(int length)
Increases the current
readerIndex by the specified
length in this buffer. |
void |
writeBytes(byte[] src,
int srcIndex,
int length)
Transfers the specified source array's data to this buffer starting at
the current
writerIndex and increases the writerIndex
by the number of the transferred bytes (= length ). |
void |
writeBytes(java.nio.ByteBuffer src)
Transfers the specified source buffer's data to this buffer starting at
the current
writerIndex until the source buffer's position
reaches its limit, and increases the writerIndex by the
number of the transferred bytes. |
void |
writeBytes(ChannelBuffer src,
int length)
Transfers the specified source buffer's data to this buffer starting at
the current
writerIndex and increases the writerIndex
by the number of the transferred bytes (= length ). |
void |
writeBytes(ChannelBuffer src,
int srcIndex,
int length)
Transfers the specified source buffer's data to this buffer starting at
the current
writerIndex and increases the writerIndex
by the number of the transferred bytes (= length ). |
int |
writeBytes(java.io.InputStream in,
int length)
Transfers the content of the specified stream to this buffer
starting at the current
writerIndex and increases the
writerIndex by the number of the transferred bytes. |
int |
writeBytes(java.nio.channels.ScatteringByteChannel in,
int length)
Transfers the content of the specified channel to this buffer
starting at the current
writerIndex and increases the
writerIndex by the number of the transferred bytes. |
void |
writerIndex(int writerIndex)
Sets the
writerIndex of this buffer. |
void |
writeZero(int length)
Fills this buffer with NUL (0x00) starting at the current
writerIndex and increases the writerIndex by the
specified length . |
copy, duplicate, factory, getInt, getLong, getShort, getUnsignedMedium, order, setInt, setLong, setMedium, setShort
array, arrayOffset, capacity, getByte, getBytes, getBytes, getBytes, getBytes, getBytes, hasArray, isDirect, setByte, setBytes, setBytes, setBytes, setBytes, setBytes, slice, toByteBuffer
bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, bytesBefore, compareTo, copy, ensureWritableBytes, equals, getBytes, getBytes, getBytes, getChar, getDouble, getFloat, getMedium, getUnsignedByte, getUnsignedInt, getUnsignedShort, hashCode, indexOf, indexOf, readable, readableBytes, readByte, readChar, readDouble, readerIndex, readFloat, readInt, readLong, readMedium, readShort, readUnsignedByte, readUnsignedInt, readUnsignedMedium, readUnsignedShort, setBytes, setBytes, setBytes, setChar, setDouble, setFloat, setZero, slice, toByteBuffer, toByteBuffers, toByteBuffers, toString, toString, toString, writable, writableBytes, writeByte, writeBytes, writeBytes, writeChar, writeDouble, writeFloat, writeInt, writeLong, writeMedium, writerIndex, writeShort
public void clear()
ChannelBuffer
readerIndex
and writerIndex
of this buffer to
0
.
This method is identical to setIndex(0, 0)
.
Please note that the behavior of this method is different
from that of NIO buffer, which sets the limit
to
the capacity
of the buffer.
clear
在接口中 ChannelBuffer
clear
在类中 AbstractChannelBuffer
public void readerIndex(int readerIndex)
ChannelBuffer
readerIndex
of this buffer.readerIndex
在接口中 ChannelBuffer
readerIndex
在类中 AbstractChannelBuffer
public void writerIndex(int writerIndex)
ChannelBuffer
writerIndex
of this buffer.writerIndex
在接口中 ChannelBuffer
writerIndex
在类中 AbstractChannelBuffer
public void setIndex(int readerIndex, int writerIndex)
ChannelBuffer
readerIndex
and writerIndex
of this buffer
in one shot. This method is useful when you have to worry about the
invocation order of ChannelBuffer.readerIndex(int)
and ChannelBuffer.writerIndex(int)
methods. For example, the following code will fail:
// Create a buffer whose readerIndex, writerIndex and capacity are // 0, 0 and 8 respectively.The following code will also fail:ChannelBuffer
buf =ChannelBuffers
.buffer(8); // IndexOutOfBoundsException is thrown because the specified // readerIndex (2) cannot be greater than the current writerIndex (0). buf.readerIndex(2); buf.writerIndex(4);
// Create a buffer whose readerIndex, writerIndex and capacity are // 0, 8 and 8 respectively.By contrast, this method guarantees that it never throws anChannelBuffer
buf =ChannelBuffers
.wrappedBuffer(new byte[8]); // readerIndex becomes 8. buf.readLong(); // IndexOutOfBoundsException is thrown because the specified // writerIndex (4) cannot be less than the current readerIndex (8). buf.writerIndex(4); buf.readerIndex(2);
IndexOutOfBoundsException
as long as the specified
indexes meet basic constraints, regardless what the current index
values of the buffer are:
// No matter what the current state of the buffer is, the following // call always succeeds as long as the capacity of the buffer is not // less than 4. buf.setIndex(2, 4);
setIndex
在接口中 ChannelBuffer
setIndex
在类中 AbstractChannelBuffer
public void markReaderIndex()
ChannelBuffer
readerIndex
in this buffer. You can
reposition the current readerIndex
to the marked
readerIndex
by calling ChannelBuffer.resetReaderIndex()
.
The initial value of the marked readerIndex
is 0
.markReaderIndex
在接口中 ChannelBuffer
markReaderIndex
在类中 AbstractChannelBuffer
public void resetReaderIndex()
ChannelBuffer
readerIndex
to the marked
readerIndex
in this buffer.resetReaderIndex
在接口中 ChannelBuffer
resetReaderIndex
在类中 AbstractChannelBuffer
public void markWriterIndex()
ChannelBuffer
writerIndex
in this buffer. You can
reposition the current writerIndex
to the marked
writerIndex
by calling ChannelBuffer.resetWriterIndex()
.
The initial value of the marked writerIndex
is 0
.markWriterIndex
在接口中 ChannelBuffer
markWriterIndex
在类中 AbstractChannelBuffer
public void resetWriterIndex()
ChannelBuffer
writerIndex
to the marked
writerIndex
in this buffer.resetWriterIndex
在接口中 ChannelBuffer
resetWriterIndex
在类中 AbstractChannelBuffer
public void discardReadBytes()
ChannelBuffer
readerIndex
.
It moves the bytes between readerIndex
and writerIndex
to the 0th index, and sets readerIndex
and writerIndex
to 0
and oldWriterIndex - oldReaderIndex
respectively.
Please refer to the class documentation for more detailed explanation.
discardReadBytes
在接口中 ChannelBuffer
discardReadBytes
在类中 AbstractChannelBuffer
public ChannelBuffer readBytes(int length)
ChannelBuffer
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= length
).
The returned buffer's readerIndex
and writerIndex
are
0
and length
respectively.readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
length
- the number of bytes to transferpublic ChannelBuffer readSlice(int length)
ChannelBuffer
readerIndex
and increases the readerIndex
by the size
of the new slice (= length
).readSlice
在接口中 ChannelBuffer
readSlice
在类中 AbstractChannelBuffer
length
- the size of the new slicepublic void readBytes(byte[] dst, int dstIndex, int length)
ChannelBuffer
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= length
).readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
dstIndex
- the first index of the destinationlength
- the number of bytes to transferpublic void readBytes(byte[] dst)
ChannelBuffer
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= dst.length
).readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
public void readBytes(ChannelBuffer dst)
ChannelBuffer
readerIndex
until the destination becomes
non-writable, and increases the readerIndex
by the number of the
transferred bytes. This method is basically same with
ChannelBuffer.readBytes(ChannelBuffer, int, int)
, except that this method
increases the writerIndex
of the destination by the number of
the transferred bytes while ChannelBuffer.readBytes(ChannelBuffer, int, int)
does not.readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
public void readBytes(ChannelBuffer dst, int length)
ChannelBuffer
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= length
). This method
is basically same with ChannelBuffer.readBytes(ChannelBuffer, int, int)
,
except that this method increases the writerIndex
of the
destination by the number of the transferred bytes (= length
)
while ChannelBuffer.readBytes(ChannelBuffer, int, int)
does not.readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
public void readBytes(ChannelBuffer dst, int dstIndex, int length)
ChannelBuffer
readerIndex
and increases the readerIndex
by the number of the transferred bytes (= length
).readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
dstIndex
- the first index of the destinationlength
- the number of bytes to transferpublic void readBytes(java.nio.ByteBuffer dst)
ChannelBuffer
readerIndex
until the destination's position
reaches its limit, and increases the readerIndex
by the
number of the transferred bytes.readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
public int readBytes(java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
ChannelBuffer
readerIndex
.readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
length
- the maximum number of bytes to transferjava.io.IOException
- if the specified channel threw an exception during I/Opublic void readBytes(java.io.OutputStream out, int length) throws java.io.IOException
ChannelBuffer
readerIndex
.readBytes
在接口中 ChannelBuffer
readBytes
在类中 AbstractChannelBuffer
length
- the number of bytes to transferjava.io.IOException
- if the specified stream threw an exception during I/Opublic void skipBytes(int length)
ChannelBuffer
readerIndex
by the specified
length
in this buffer.skipBytes
在接口中 ChannelBuffer
skipBytes
在类中 AbstractChannelBuffer
public void writeBytes(byte[] src, int srcIndex, int length)
ChannelBuffer
writerIndex
and increases the writerIndex
by the number of the transferred bytes (= length
).writeBytes
在接口中 ChannelBuffer
writeBytes
在类中 AbstractChannelBuffer
srcIndex
- the first index of the sourcelength
- the number of bytes to transferpublic void writeBytes(ChannelBuffer src, int length)
ChannelBuffer
writerIndex
and increases the writerIndex
by the number of the transferred bytes (= length
). This method
is basically same with ChannelBuffer.writeBytes(ChannelBuffer, int, int)
,
except that this method increases the readerIndex
of the source
buffer by the number of the transferred bytes (= length
) while
ChannelBuffer.writeBytes(ChannelBuffer, int, int)
does not.writeBytes
在接口中 ChannelBuffer
writeBytes
在类中 AbstractChannelBuffer
length
- the number of bytes to transferpublic void writeBytes(ChannelBuffer src, int srcIndex, int length)
ChannelBuffer
writerIndex
and increases the writerIndex
by the number of the transferred bytes (= length
).writeBytes
在接口中 ChannelBuffer
writeBytes
在类中 AbstractChannelBuffer
srcIndex
- the first index of the sourcelength
- the number of bytes to transferpublic void writeBytes(java.nio.ByteBuffer src)
ChannelBuffer
writerIndex
until the source buffer's position
reaches its limit, and increases the writerIndex
by the
number of the transferred bytes.writeBytes
在接口中 ChannelBuffer
writeBytes
在类中 AbstractChannelBuffer
public int writeBytes(java.io.InputStream in, int length) throws java.io.IOException
ChannelBuffer
writerIndex
and increases the
writerIndex
by the number of the transferred bytes.writeBytes
在接口中 ChannelBuffer
writeBytes
在类中 AbstractChannelBuffer
length
- the number of bytes to transferjava.io.IOException
- if the specified stream threw an exception during I/Opublic int writeBytes(java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
ChannelBuffer
writerIndex
and increases the
writerIndex
by the number of the transferred bytes.writeBytes
在接口中 ChannelBuffer
writeBytes
在类中 AbstractChannelBuffer
length
- the maximum number of bytes to transferjava.io.IOException
- if the specified channel threw an exception during I/Opublic void writeZero(int length)
ChannelBuffer
writerIndex
and increases the writerIndex
by the
specified length
.writeZero
在接口中 ChannelBuffer
writeZero
在类中 AbstractChannelBuffer
length
- the number of NULs to write to the bufferprotected void checkReadableBytes(int length)
IndexOutOfBoundsException
the length is not 0.