doWriteMessage() — netty Function Reference
Architecture documentation for the doWriteMessage() function in KQueueDatagramChannel.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 0bcc10e9_2b7e_9247_29c7_51b95390a7b3["doWriteMessage()"] d655085f_28d0_2ab1_6880_68b2da4e27e4["KQueueDatagramChannel"] 0bcc10e9_2b7e_9247_29c7_51b95390a7b3 -->|defined in| d655085f_28d0_2ab1_6880_68b2da4e27e4 style 0bcc10e9_2b7e_9247_29c7_51b95390a7b3 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDatagramChannel.java lines 255–311
@Override
protected boolean doWriteMessage(Object msg) throws Exception {
final ByteBuf data;
InetSocketAddress remoteAddress;
if (msg instanceof AddressedEnvelope) {
@SuppressWarnings("unchecked")
AddressedEnvelope<ByteBuf, InetSocketAddress> envelope =
(AddressedEnvelope<ByteBuf, InetSocketAddress>) msg;
data = envelope.content();
remoteAddress = envelope.recipient();
} else {
data = (ByteBuf) msg;
remoteAddress = null;
}
final int dataLen = data.readableBytes();
if (dataLen == 0) {
return true;
}
final long writtenBytes;
if (data.hasMemoryAddress()) {
long memoryAddress = data.memoryAddress();
if (remoteAddress == null) {
try {
writtenBytes = socket.writeAddress(memoryAddress, data.readerIndex(), data.writerIndex());
} catch (Errors.NativeIoException e) {
throw translateForConnected(e);
}
} else {
writtenBytes = socket.sendToAddress(memoryAddress, data.readerIndex(), data.writerIndex(),
remoteAddress.getAddress(), remoteAddress.getPort());
}
} else if (data.nioBufferCount() > 1) {
IovArray array = ((NativeArrays) registration().attachment()).cleanIovArray();
array.add(data, data.readerIndex(), data.readableBytes());
int cnt = array.count();
assert cnt != 0;
if (remoteAddress == null) {
writtenBytes = socket.writevAddresses(array.memoryAddress(0), cnt);
} else {
writtenBytes = socket.sendToAddresses(array.memoryAddress(0), cnt,
remoteAddress.getAddress(), remoteAddress.getPort());
}
} else {
ByteBuffer nioData = data.internalNioBuffer(data.readerIndex(), data.readableBytes());
if (remoteAddress == null) {
writtenBytes = socket.write(nioData, nioData.position(), nioData.limit());
} else {
writtenBytes = socket.sendTo(nioData, nioData.position(), nioData.limit(),
remoteAddress.getAddress(), remoteAddress.getPort());
}
}
return writtenBytes > 0;
}
Domain
Subdomains
Defined In
Source
Frequently Asked Questions
What does doWriteMessage() do?
doWriteMessage() is a function in the netty codebase, defined in transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDatagramChannel.java.
Where is doWriteMessage() defined?
doWriteMessage() is defined in transport-classes-kqueue/src/main/java/io/netty/channel/kqueue/KQueueDatagramChannel.java at line 255.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free