RingBuffer Class — netty Architecture
Architecture documentation for the RingBuffer class in RingBuffer.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 116af965_145c_bf54_06b4_e3e1905a65e4["RingBuffer"] dd4eb691_bbc3_bc2b_1ef4_4b7b794e6d63["RingBuffer.java"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|defined in| dd4eb691_bbc3_bc2b_1ef4_4b7b794e6d63 0c594705_37c3_e617_8ff3_b4bded516297["RingBuffer()"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|method| 0c594705_37c3_e617_8ff3_b4bded516297 e1de2f3b_db8e_326e_9e50_9869c1ee5b81["enable()"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|method| e1de2f3b_db8e_326e_9e50_9869c1ee5b81 f038049e_6758_d06f_9e8b_6f4a27e63c10["fd()"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|method| f038049e_6758_d06f_9e8b_6f4a27e63c10 d303d2ba_054d_1497_466c_6b5b3b91ba09["features()"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|method| d303d2ba_054d_1497_466c_6b5b3b91ba09 a809e2ff_1535_c528_68a7_963078208cee["SubmissionQueue()"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|method| a809e2ff_1535_c528_68a7_963078208cee aa758ef6_c4a4_28ed_ce13_5902ea421687["CompletionQueue()"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|method| aa758ef6_c4a4_28ed_ce13_5902ea421687 1a16d931_23c3_4bff_2b9d_8834856d2e5a["close()"] 116af965_145c_bf54_06b4_e3e1905a65e4 -->|method| 1a16d931_23c3_4bff_2b9d_8834856d2e5a
Relationship Graph
Source Code
transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java lines 19–77
final class RingBuffer {
private final SubmissionQueue ioUringSubmissionQueue;
private final CompletionQueue ioUringCompletionQueue;
private final int features;
private boolean closed;
RingBuffer(SubmissionQueue ioUringSubmissionQueue,
CompletionQueue ioUringCompletionQueue, int features) {
this.ioUringSubmissionQueue = ioUringSubmissionQueue;
this.ioUringCompletionQueue = ioUringCompletionQueue;
this.features = features;
}
/**
* Enable ring. This method must be called from the same method that will call {@link SubmissionQueue#submit()} and
* {@link SubmissionQueue#submitAndWait()}.
*/
void enable() {
// We create our ring in disabled mode and so need to enable it first.
Native.ioUringRegisterEnableRings(fd());
// Now also register the ring filedescriptor itself. This needs to happen in the same thread
// that will also call the io_uring_enter(...)
ioUringSubmissionQueue.tryRegisterRingFd();
}
int fd() {
return ioUringCompletionQueue.ringFd;
}
int features() {
return features;
}
SubmissionQueue ioUringSubmissionQueue() {
return this.ioUringSubmissionQueue;
}
CompletionQueue ioUringCompletionQueue() {
return this.ioUringCompletionQueue;
}
void close() {
if (closed) {
return;
}
closed = true;
ioUringSubmissionQueue.close();
ioUringCompletionQueue.close();
Native.ioUringExit(
ioUringSubmissionQueue.submissionQueueArrayAddress(),
ioUringSubmissionQueue.ringEntries,
ioUringSubmissionQueue.ringAddress,
ioUringSubmissionQueue.ringSize,
ioUringCompletionQueue.ringAddress,
ioUringCompletionQueue.ringSize,
ioUringSubmissionQueue.ringFd,
ioUringSubmissionQueue.enterRingFd);
}
}
Source
Frequently Asked Questions
What is the RingBuffer class?
RingBuffer is a class in the netty codebase, defined in transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java.
Where is RingBuffer defined?
RingBuffer is defined in transport-classes-io_uring/src/main/java/io/netty/channel/uring/RingBuffer.java at line 19.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free