KQueueDomainUnsafe Class — netty Architecture
Architecture documentation for the KQueueDomainUnsafe class in KQueueDomainSocketChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 296e37d0_15ad_0124_d998_7b16b98aec54["KQueueDomainUnsafe"] 694369b2_f52d_5597_6dfd_471c7990de34["KQueueDomainSocketChannel.java"] 296e37d0_15ad_0124_d998_7b16b98aec54 -->|defined in| 694369b2_f52d_5597_6dfd_471c7990de34 8aca2ab6_9800_2119_f857_87862c4d6b16["readReady()"] 296e37d0_15ad_0124_d998_7b16b98aec54 -->|method| 8aca2ab6_9800_2119_f857_87862c4d6b16 131adef7_86c6_6c7e_dddd_9b8b83913ccb["readReadyFd()"] 296e37d0_15ad_0124_d998_7b16b98aec54 -->|method| 131adef7_86c6_6c7e_dddd_9b8b83913ccb
Relationship Graph
Source Code
transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDomainSocketChannel.java lines 127–188
private final class KQueueDomainUnsafe extends KQueueStreamUnsafe {
@Override
void readReady(KQueueRecvByteAllocatorHandle allocHandle) {
switch (config().getReadMode()) {
case BYTES:
super.readReady(allocHandle);
break;
case FILE_DESCRIPTORS:
readReadyFd();
break;
default:
throw new Error("Unexpected read mode: " + config().getReadMode());
}
}
private void readReadyFd() {
if (socket.isInputShutdown()) {
super.clearReadFilter0();
return;
}
final ChannelConfig config = config();
final KQueueRecvByteAllocatorHandle allocHandle = recvBufAllocHandle();
final ChannelPipeline pipeline = pipeline();
allocHandle.reset(config);
try {
readLoop: do {
// lastBytesRead represents the fd. We use lastBytesRead because it must be set so that the
// KQueueRecvByteAllocatorHandle knows if it should try to read again or not when autoRead is
// enabled.
int recvFd = socket.recvFd();
switch(recvFd) {
case 0:
allocHandle.lastBytesRead(0);
break readLoop;
case -1:
allocHandle.lastBytesRead(-1);
close(voidPromise());
return;
default:
allocHandle.lastBytesRead(1);
allocHandle.incMessagesRead(1);
readPending = false;
pipeline.fireChannelRead(new FileDescriptor(recvFd));
break;
}
} while (allocHandle.continueReading());
allocHandle.readComplete();
pipeline.fireChannelReadComplete();
} catch (Throwable t) {
allocHandle.readComplete();
pipeline.fireChannelReadComplete();
pipeline.fireExceptionCaught(t);
} finally {
if (shouldStopReading(config)) {
clearReadFilter0();
}
}
}
}
Defined In
Source
Frequently Asked Questions
What is the KQueueDomainUnsafe class?
KQueueDomainUnsafe is a class in the netty codebase, defined in transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDomainSocketChannel.java.
Where is KQueueDomainUnsafe defined?
KQueueDomainUnsafe is defined in transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDomainSocketChannel.java at line 127.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free