ReadOnlyUnsafeDirectByteBuf Class — netty Architecture
Architecture documentation for the ReadOnlyUnsafeDirectByteBuf class in ReadOnlyUnsafeDirectByteBuf.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b["ReadOnlyUnsafeDirectByteBuf"] eac20bcf_bc7f_0eb4_dd56_800c5fe3a30b["ReadOnlyUnsafeDirectByteBuf.java"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|defined in| eac20bcf_bc7f_0eb4_dd56_800c5fe3a30b a1705a05_aeb3_e774_6ccc_31c1f050bd02["ReadOnlyUnsafeDirectByteBuf()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| a1705a05_aeb3_e774_6ccc_31c1f050bd02 d13ed1d0_888b_1215_d68d_c6bffb61e90e["_getByte()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| d13ed1d0_888b_1215_d68d_c6bffb61e90e 411ee7b0_e171_8685_66ab_5e5e606f3404["_getShort()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| 411ee7b0_e171_8685_66ab_5e5e606f3404 21dc5b11_0b94_0573_eb31_858382cfe1b3["_getUnsignedMedium()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| 21dc5b11_0b94_0573_eb31_858382cfe1b3 d6cfe01c_1882_c80f_c832_8dfb4377679c["_getInt()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| d6cfe01c_1882_c80f_c832_8dfb4377679c 5b54bed8_85fd_521a_7576_8bba1624e760["_getLong()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| 5b54bed8_85fd_521a_7576_8bba1624e760 58ba99ab_9497_d8f7_86b0_4309374c437b["ByteBuf()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| 58ba99ab_9497_d8f7_86b0_4309374c437b ded47edf_9d24_1040_3147_2551a9b24b19["hasMemoryAddress()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| ded47edf_9d24_1040_3147_2551a9b24b19 f7f89df3_0b9f_b4a3_f6e5_d9950327763b["memoryAddress()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| f7f89df3_0b9f_b4a3_f6e5_d9950327763b 92e6c372_18f9_2f9a_f225_01b9d3b8971c["addr()"] 4dca7c75_8491_c7dd_3eca_c6f1bd3bb01b -->|method| 92e6c372_18f9_2f9a_f225_01b9d3b8971c
Relationship Graph
Source Code
buffer/src/main/java/io/netty/buffer/ReadOnlyUnsafeDirectByteBuf.java lines 28–124
final class ReadOnlyUnsafeDirectByteBuf extends ReadOnlyByteBufferBuf {
private final long memoryAddress;
ReadOnlyUnsafeDirectByteBuf(ByteBufAllocator allocator, ByteBuffer byteBuffer) {
super(allocator, byteBuffer);
// Use buffer as the super class will slice the passed in ByteBuffer which means the memoryAddress
// may be different if the position != 0.
memoryAddress = PlatformDependent.directBufferAddress(buffer);
}
@Override
protected byte _getByte(int index) {
return UnsafeByteBufUtil.getByte(addr(index));
}
@Override
protected short _getShort(int index) {
return UnsafeByteBufUtil.getShort(addr(index));
}
@Override
protected int _getUnsignedMedium(int index) {
return UnsafeByteBufUtil.getUnsignedMedium(addr(index));
}
@Override
protected int _getInt(int index) {
return UnsafeByteBufUtil.getInt(addr(index));
}
@Override
protected long _getLong(int index) {
return UnsafeByteBufUtil.getLong(addr(index));
}
@Override
protected ByteBuf getBytes(int index, ByteBuf dst, int dstIndex, int length, boolean internal) {
checkIndex(index, length);
ObjectUtil.checkNotNull(dst, "dst");
if (dstIndex < 0 || dstIndex > dst.capacity() - length) {
throw new IndexOutOfBoundsException("dstIndex: " + dstIndex);
}
if (dst.hasMemoryAddress()) {
PlatformDependent.copyMemory(addr(index), dst.memoryAddress() + dstIndex, length);
} else if (dst.hasArray()) {
PlatformDependent.copyMemory(addr(index), dst.array(), dst.arrayOffset() + dstIndex, length);
} else {
dst.setBytes(dstIndex, this, index, length);
}
return this;
}
@Override
protected ByteBuf getBytes(int index, byte[] dst, int dstIndex, int length, boolean internal) {
checkIndex(index, length);
ObjectUtil.checkNotNull(dst, "dst");
if (dstIndex < 0 || dstIndex > dst.length - length) {
throw new IndexOutOfBoundsException(String.format(
"dstIndex: %d, length: %d (expected: range(0, %d))", dstIndex, length, dst.length));
}
if (length != 0) {
PlatformDependent.copyMemory(addr(index), dst, dstIndex, length);
}
return this;
}
@Override
public ByteBuf copy(int index, int length) {
checkIndex(index, length);
ByteBuf copy = alloc().directBuffer(length, maxCapacity());
if (length != 0) {
if (copy.hasMemoryAddress()) {
PlatformDependent.copyMemory(addr(index), copy.memoryAddress(), length);
copy.setIndex(0, length);
} else {
copy.writeBytes(this, index, length);
}
}
return copy;
Source
Frequently Asked Questions
What is the ReadOnlyUnsafeDirectByteBuf class?
ReadOnlyUnsafeDirectByteBuf is a class in the netty codebase, defined in buffer/src/main/java/io/netty/buffer/ReadOnlyUnsafeDirectByteBuf.java.
Where is ReadOnlyUnsafeDirectByteBuf defined?
ReadOnlyUnsafeDirectByteBuf is defined in buffer/src/main/java/io/netty/buffer/ReadOnlyUnsafeDirectByteBuf.java at line 28.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free