public class UnpooledDirectByteBuf extends AbstractReferenceCountedByteBuf
ByteBuffer
的缓冲区。
建议使用AbstractByteBufAllocator.directBuffer(int, int)
, Unpooled.directBuffer(int)
和Unpooled.wrappedBuffer(ByteBuffer)
,而不是显式调用构造函数。
Modifier | Constructor and Description |
---|---|
protected |
UnpooledDirectByteBuf(ByteBufAllocator alloc, java.nio.ByteBuffer initialBuffer, int maxCapacity)
通过包装指定的初始缓冲区来创建一个新的直接缓冲区。
|
|
UnpooledDirectByteBuf(ByteBufAllocator alloc, int initialCapacity, int maxCapacity)
创建一个新的直接缓冲区。
|
Modifier and Type | Method and Description |
---|---|
protected byte |
_getByte(int index) |
protected int |
_getInt(int index) |
protected int |
_getIntLE(int index) |
protected long |
_getLong(int index) |
protected long |
_getLongLE(int index) |
protected short |
_getShort(int index) |
protected short |
_getShortLE(int index) |
protected int |
_getUnsignedMedium(int index) |
protected int |
_getUnsignedMediumLE(int index) |
protected void |
_setByte(int index, int value) |
protected void |
_setInt(int index, int value) |
protected void |
_setIntLE(int index, int value) |
protected void |
_setLong(int index, long value) |
protected void |
_setLongLE(int index, long value) |
protected void |
_setMedium(int index, int value) |
protected void |
_setMediumLE(int index, int value) |
protected void |
_setShort(int index, int value) |
protected void |
_setShortLE(int index, int value) |
ByteBufAllocator |
alloc()
返回创建此缓冲区的 ByteBufAllocator 。
|
protected java.nio.ByteBuffer |
allocateDirect(int initialCapacity)
用给定的initialCapacity分配新的直接
ByteBuffer 。
|
byte[] |
array()
返回此缓冲区的后备字节数组。
|
int |
arrayOffset()
返回此缓冲区的后备字节数组中第一个字节的偏移量。
|
int |
capacity()
返回此缓冲区可包含的字节数(字节)。
|
ByteBuf |
capacity(int newCapacity)
调整此缓冲区的容量。
|
ByteBuf |
copy(int index, int length)
返回此缓冲区的子区域的副本。
|
protected void |
deallocate()
|
protected void |
freeDirect(java.nio.ByteBuffer buffer)
免费直接
ByteBuffer
|
byte |
getByte(int index)
获取此缓冲区中指定的绝对
index 一个字节。
|
ByteBuf |
getBytes(int index, byte[] dst, int dstIndex, int length)
将此缓冲区的数据传输到指定的绝对目标
index 开始的目标。
|
ByteBuf |
getBytes(int index, java.nio.ByteBuffer dst)
将缓冲区的数据传输到指定的目的地,从指定的绝对
index 开始,直到目的地的位置达到其限制。
|
ByteBuf |
getBytes(int index, ByteBuf dst, int dstIndex, int length)
将此缓冲区的数据传输到指定的绝对目标
index 开始的目标。
|
int |
getBytes(int index, java.nio.channels.FileChannel out, long position, int length)
将此缓冲区的数据从指定的绝对
index 开始
index 到指定的通道,从给定的文件位置开始。
|
int |
getBytes(int index, java.nio.channels.GatheringByteChannel out, int length)
将此缓冲区的数据传输到指定的通道,从指定的绝对
index 。
|
ByteBuf |
getBytes(int index, java.io.OutputStream out, int length)
将此缓冲区的数据传输到指定的绝对
index 开始的流。
|
int |
getInt(int index)
在此缓冲区中的指定绝对
index 处获取一个32位整数。
|
long |
getLong(int index)
在此缓冲区中的指定绝对
index 处获取64位长整数。
|
short |
getShort(int index)
在此缓冲区中的指定绝对
index 处获取一个16位短整数。
|
int |
getUnsignedMedium(int index)
在此缓冲区中的指定绝对
index 处获取一个无符号的24位中等整数。
|
boolean |
hasArray()
当且仅当此缓冲区有一个后备字节数组时,才返回
true 。
|
boolean |
hasMemoryAddress()
当且仅当此缓冲区引用指向后备数据的低级内存地址时才返回
true 。
|
java.nio.ByteBuffer |
internalNioBuffer(int index, int length)
仅内部使用:公开内部NIO缓冲区。
|
boolean |
isDirect()
当且仅当此缓冲区由NIO直接缓冲区支持时才返回
true 。
|
long |
memoryAddress()
返回指向备份数据第一个字节的低级内存地址。
|
java.nio.ByteBuffer |
nioBuffer(int index, int length)
将此缓冲区的子区域公开为NIO
ByteBuffer 。
|
int |
nioBufferCount()
返回构成此缓冲区的NIO
ByteBuffer 的最大数量。
|
java.nio.ByteBuffer[] |
nioBuffers(int index, int length)
以指定的索引和长度公开此缓冲区的字节为NIO
ByteBuffer 返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此索引和标记缓冲。
|
java.nio.ByteOrder |
order()
返回此缓冲区的
endianness 。
|
ByteBuf |
readBytes(byte[] dst, int dstIndex, int length)
传输此缓冲区的数据到指定的目标并从当前
readerIndex 并增加了
readerIndex 由传输的字节(=数量
length )。
|
ByteBuf |
readBytes(java.nio.ByteBuffer dst)
将此缓冲区的数据传输到指定的目标,从当前
readerIndex 开始,直到目标的位置达到其限制,并将传输的字节数增加
readerIndex 。
|
int |
readBytes(java.nio.channels.FileChannel out, long position, int length)
将此缓冲区的数据从当前的
readerIndex 到指定的通道,从给定的文件位置开始。
|
int |
readBytes(java.nio.channels.GatheringByteChannel out, int length)
将此缓冲区的数据传输到当前
readerIndex 开始的指定流。
|
ByteBuf |
readBytes(java.io.OutputStream out, int length)
将此缓冲区的数据传输到当前
readerIndex 开始的指定流。
|
ByteBuf |
setByte(int index, int value)
在此缓冲区中的指定绝对
index 处设置指定的字节。
|
ByteBuf |
setBytes(int index, byte[] src, int srcIndex, int length)
将指定的源数组的数据传输到此缓冲区,从指定的绝对
index 。
|
ByteBuf |
setBytes(int index, java.nio.ByteBuffer src)
将指定的源缓冲区的数据从指定的绝对
index 开始传输到此缓冲区,直到源缓冲区的位置达到其限制。
|
ByteBuf |
setBytes(int index, ByteBuf src, int srcIndex, int length)
将指定的源缓冲区的数据从指定的绝对
index 开始传送到此缓冲区。
|
int |
setBytes(int index, java.nio.channels.FileChannel in, long position, int length)
将从给定文件位置开始的指定源通道的内容传输到此缓冲区,从指定的绝对
index 。
|
int |
setBytes(int index, java.io.InputStream in, int length)
将指定源流的内容从指定的绝对
index 开始传输到此缓冲区。
|
int |
setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length)
将指定源通道的内容从指定绝对
index 开始传送到此缓冲区。
|
ByteBuf |
setInt(int index, int value)
在此缓冲区中的指定绝对
index 处设置指定的32位整数。
|
ByteBuf |
setLong(int index, long value)
在此缓冲区中的指定绝对
index 处设置指定的64位长整数。
|
ByteBuf |
setMedium(int index, int value)
在此缓冲区中指定的绝对
index 处设置指定的24位中等整数。
|
ByteBuf |
setShort(int index, int value)
在此缓冲区中的指定绝对
index 处设置指定的16位短整数。
|
ByteBuf |
unwrap()
如果此缓冲区是另一个缓冲区的包装,则返回底层缓冲区实例。
|
refCnt, release, release, retain, retain, setRefCnt, touch, touch
adjustMarkers, asReadOnly, bytesBefore, bytesBefore, bytesBefore, checkDstIndex, checkIndex, checkIndex, checkNewCapacity, checkReadableBytes, checkSrcIndex, clear, compareTo, copy, discardReadBytes, discardSomeReadBytes, duplicate, ensureAccessible, ensureWritable, ensureWritable, equals, forEachByte, forEachByte, forEachByteDesc, forEachByteDesc, getBoolean, getBytes, getBytes, getBytes, getChar, getCharSequence, getDouble, getFloat, getIntLE, getLongLE, getMedium, getMediumLE, getShortLE, getUnsignedByte, getUnsignedInt, getUnsignedIntLE, getUnsignedMediumLE, getUnsignedShort, getUnsignedShortLE, hashCode, indexOf, isReadable, isReadable, isReadOnly, isWritable, isWritable, markReaderIndex, markWriterIndex, maxCapacity, maxCapacity, maxWritableBytes, newSwappedByteBuf, nioBuffer, nioBuffers, order, readableBytes, readBoolean, readByte, readBytes, readBytes, readBytes, readBytes, readBytes, readChar, readCharSequence, readDouble, readerIndex, readerIndex, readFloat, readInt, readIntLE, readLong, readLongLE, readMedium, readMediumLE, readRetainedSlice, readShort, readShortLE, readSlice, readUnsignedByte, readUnsignedInt, readUnsignedIntLE, readUnsignedMedium, readUnsignedMediumLE, readUnsignedShort, readUnsignedShortLE, resetReaderIndex, resetWriterIndex, retainedDuplicate, retainedSlice, retainedSlice, setBoolean, setBytes, setBytes, setBytes, setChar, setCharSequence, setDouble, setFloat, setIndex, setIntLE, setLongLE, setMediumLE, setShortLE, setZero, skipBytes, slice, slice, toString, toString, toString, writableBytes, writeBoolean, writeByte, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeBytes, writeChar, writeCharSequence, writeDouble, writeFloat, writeInt, writeIntLE, writeLong, writeLongLE, writeMedium, writeMediumLE, writerIndex, writerIndex, writeShort, writeShortLE, writeZero
getDoubleLE, getFloatLE, readDoubleLE, readFloatLE, setDoubleLE, setFloatLE, writeDoubleLE, writeFloatLE
public UnpooledDirectByteBuf(ByteBufAllocator alloc, int initialCapacity, int maxCapacity)
initialCapacity
- 底层直接缓冲区的初始容量
maxCapacity
- 底层直接缓冲区的最大容量
protected UnpooledDirectByteBuf(ByteBufAllocator alloc, java.nio.ByteBuffer initialBuffer, int maxCapacity)
maxCapacity
- 底层直接缓冲区的最大容量
protected java.nio.ByteBuffer allocateDirect(int initialCapacity)
ByteBuffer
。
protected void freeDirect(java.nio.ByteBuffer buffer)
ByteBuffer
public boolean isDirect()
ByteBuf
true
。
public ByteBuf capacity(int newCapacity)
ByteBuf
newCapacity
小于当前容量,则此缓冲区的内容将被截断。
如果newCapacity
大于当前容量,则缓冲区会附加长度为(newCapacity - currentCapacity)
未指定数据。
public ByteBufAllocator alloc()
ByteBuf
ByteBufAllocator
。
public java.nio.ByteOrder order()
ByteBuf
public boolean hasArray()
ByteBuf
true
。
如果此方法返回true,则可以放心地呼叫ByteBuf.array()
和ByteBuf.arrayOffset()
。
public int arrayOffset()
ByteBuf
arrayOffset
在类
ByteBuf
public boolean hasMemoryAddress()
ByteBuf
true
。
hasMemoryAddress
在类
ByteBuf
public long memoryAddress()
ByteBuf
memoryAddress
在类
ByteBuf
public byte getByte(int index)
ByteBuf
index
一个字节。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
getByte
在类
AbstractByteBuf
protected byte _getByte(int index)
_getByte
在类
AbstractByteBuf
public short getShort(int index)
ByteBuf
index
处获取一个16位短整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
getShort
在类
AbstractByteBuf
protected short _getShort(int index)
_getShort
在类
AbstractByteBuf
protected short _getShortLE(int index)
_getShortLE
在类
AbstractByteBuf
public int getUnsignedMedium(int index)
ByteBuf
index
处获取一个无符号的24位中等整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
protected int _getUnsignedMedium(int index)
_getUnsignedMedium
在类
AbstractByteBuf
protected int _getUnsignedMediumLE(int index)
_getUnsignedMediumLE
在类
AbstractByteBuf
public int getInt(int index)
ByteBuf
index
处获取一个32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
getInt
上课
AbstractByteBuf
protected int _getInt(int index)
_getInt
在类
AbstractByteBuf
protected int _getIntLE(int index)
_getIntLE
在类
AbstractByteBuf
public long getLong(int index)
ByteBuf
index
处获取一个64位长整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
getLong
在类
AbstractByteBuf
protected long _getLong(int index)
_getLong
在类
AbstractByteBuf
protected long _getLongLE(int index)
_getLongLE
在类
AbstractByteBuf
public ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length)
ByteBuf
index
开始的目标。
此方法不会修改源(即this
)和目标的readerIndex
或writerIndex
。
public ByteBuf getBytes(int index, byte[] dst, int dstIndex, int length)
ByteBuf
index
开始的目标。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public ByteBuf readBytes(byte[] dst, int dstIndex, int length)
ByteBuf
readerIndex
并增加了
readerIndex
由传输的字节(=数量
length
)。
readBytes
在类
AbstractByteBuf
dstIndex
- 目的地的第一个索引
length
- 要传输的字节数
public ByteBuf getBytes(int index, java.nio.ByteBuffer dst)
ByteBuf
index
开始,直到目的地的位置达到其限制。
此方法不会修改此缓冲区的readerIndex
或writerIndex
,而目标的position
将会增加。
public ByteBuf readBytes(java.nio.ByteBuffer dst)
ByteBuf
readerIndex
开始,直到目标的位置达到其限制,并将
readerIndex
增加
readerIndex
。
readBytes
在类
AbstractByteBuf
public ByteBuf setByte(int index, int value)
ByteBuf
index
处设置指定的字节。
指定值的24个高位被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
setByte
在类
AbstractByteBuf
protected void _setByte(int index, int value)
_setByte
在类
AbstractByteBuf
public ByteBuf setShort(int index, int value)
ByteBuf
index
处设置指定的16位短整数。
指定值的16个高位被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
setShort
在类
AbstractByteBuf
protected void _setShort(int index, int value)
_setShort
在类
AbstractByteBuf
protected void _setShortLE(int index, int value)
_setShortLE
在类
AbstractByteBuf
public ByteBuf setMedium(int index, int value)
ByteBuf
index
处设置指定的24位中等整数。
请注意,最高有效字节在指定值中被忽略。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
setMedium
在类
AbstractByteBuf
protected void _setMedium(int index, int value)
_setMedium
在类
AbstractByteBuf
protected void _setMediumLE(int index, int value)
_setMediumLE
在类
AbstractByteBuf
public ByteBuf setInt(int index, int value)
ByteBuf
index
处设置指定的32位整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
setInt
在类
AbstractByteBuf
protected void _setInt(int index, int value)
_setInt
在课堂上
AbstractByteBuf
protected void _setIntLE(int index, int value)
_setIntLE
在类
AbstractByteBuf
public ByteBuf setLong(int index, long value)
ByteBuf
index
处设置指定的64位长整数。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
setLong
在类
AbstractByteBuf
protected void _setLong(int index, long value)
_setLong
在类
AbstractByteBuf
protected void _setLongLE(int index, long value)
_setLongLE
在类
AbstractByteBuf
public ByteBuf setBytes(int index, ByteBuf src, int srcIndex, int length)
ByteBuf
index
开始传送到此缓冲区。
此方法不会修改来源(即this
)和目的地的readerIndex
或writerIndex
。
public ByteBuf setBytes(int index, byte[] src, int srcIndex, int length)
ByteBuf
index
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public ByteBuf setBytes(int index, java.nio.ByteBuffer src)
ByteBuf
index
开始,将指定的源缓冲区的数据传输到此缓冲区,直到源缓冲区的位置达到其限制。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public ByteBuf getBytes(int index, java.io.OutputStream out, int length) throws java.io.IOException
ByteBuf
index
开始的流。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public ByteBuf readBytes(java.io.OutputStream out, int length) throws java.io.IOException
ByteBuf
readerIndex
开始的指定流。
readBytes
在课堂上
AbstractByteBuf
length
- 要传输的字节数
java.io.IOException
- 如果指定的流在I / O期间抛出异常
public int getBytes(int index, java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
ByteBuf
index
开始的通道。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public int getBytes(int index, java.nio.channels.FileChannel out, long position, int length) throws java.io.IOException
ByteBuf
index
开始index
到指定的通道,从给定的文件位置开始。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
此方法不会修改频道的位置。
public int readBytes(java.nio.channels.GatheringByteChannel out, int length) throws java.io.IOException
ByteBuf
readerIndex
开始的指定流。
readBytes
在类
AbstractByteBuf
length
- 传输的最大字节数
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public int readBytes(java.nio.channels.FileChannel out, long position, int length) throws java.io.IOException
ByteBuf
readerIndex
开始readerIndex
到指定的通道,从给定的文件位置开始。
此方法不会修改频道的位置。
readBytes
在类
AbstractByteBuf
position
- 传输开始的文件位置
length
- 要传输的最大字节数
java.io.IOException
- 如果指定的通道在I / O期间引发异常
public int setBytes(int index, java.io.InputStream in, int length) throws java.io.IOException
ByteBuf
index
开始传输到此缓冲区。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public int setBytes(int index, java.nio.channels.ScatteringByteChannel in, int length) throws java.io.IOException
ByteBuf
index
开始传送到此缓冲区。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
public int setBytes(int index, java.nio.channels.FileChannel in, long position, int length) throws java.io.IOException
ByteBuf
index
。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
此方法不会修改频道的位置。
public int nioBufferCount()
ByteBuf
ByteBuffer
的最大数量。
请注意, ByteBuf.nioBuffers()
或ByteBuf.nioBuffers(int, int)
可能会返回更少数量的ByteBuffer
。
nioBufferCount
在类
ByteBuf
-1
如果这个缓冲区没有底层ByteBuffer
。
如果此缓冲区至少有一个基础ByteBuffer
,则基础ByteBuffer
的ByteBuffer
。
请注意,此方法不会返回0
以避免混淆。
ByteBuf.nioBuffer()
,
ByteBuf.nioBuffer(int, int)
,
ByteBuf.nioBuffers()
,
ByteBuf.nioBuffers(int, int)
public java.nio.ByteBuffer[] nioBuffers(int index, int length)
ByteBuf
ByteBuffer
返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此索引和标记缓冲。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
请注意,如果此缓冲区是动态缓冲区并且它调整了其容量,则返回的NIO缓冲区将不会看到此缓冲区的更改。
nioBuffers
在类
ByteBuf
ByteBuf.nioBufferCount()
,
ByteBuf.nioBuffer()
,
ByteBuf.nioBuffer(int, int)
public ByteBuf copy(int index, int length)
ByteBuf
readerIndex
或writerIndex
。
public java.nio.ByteBuffer internalNioBuffer(int index, int length)
ByteBuf
internalNioBuffer
类
ByteBuf
public java.nio.ByteBuffer nioBuffer(int index, int length)
ByteBuf
ByteBuffer
。
返回的缓冲区共享或包含此缓冲区的复制内容,同时更改返回的NIO缓冲区的位置和限制不会影响此缓冲区的索引和标记。
此方法不会修改此缓冲区的readerIndex
或writerIndex
。
请注意,如果此缓冲区是动态缓冲区并且它调整了其容量,则返回的NIO缓冲区将不会看到此缓冲区的更改。
nioBuffer
在类
ByteBuf
ByteBuf.nioBufferCount()
,
ByteBuf.nioBuffers()
,
ByteBuf.nioBuffers(int, int)
protected void deallocate()
AbstractReferenceCountedByteBuf
deallocate
在类
AbstractReferenceCountedByteBuf
Copyright © 2008–2018 The Netty Project. All rights reserved.