write() — netty Function Reference
Architecture documentation for the write() function in GlobalChannelTrafficShapingHandler.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 95f889b3_eae3_1bd8_4f15_602c55f0e60f["write()"] 70857fc2_a134_e299_7b48_1738d53c0016["GlobalChannelTrafficShapingHandler"] 95f889b3_eae3_1bd8_4f15_602c55f0e60f -->|defined in| 70857fc2_a134_e299_7b48_1738d53c0016 706081ef_7d7c_bb2e_f6ca_38466de329e4["handlerRemoved()"] 706081ef_7d7c_bb2e_f6ca_38466de329e4 -->|calls| 95f889b3_eae3_1bd8_4f15_602c55f0e60f e0808444_5985_0d26_adac_0697fe4d503a["submitWrite()"] e0808444_5985_0d26_adac_0697fe4d503a -->|calls| 95f889b3_eae3_1bd8_4f15_602c55f0e60f fdc8520e_a0b7_8af9_c2a9_1cedfe7a5952["sendAllValid()"] fdc8520e_a0b7_8af9_c2a9_1cedfe7a5952 -->|calls| 95f889b3_eae3_1bd8_4f15_602c55f0e60f 69a96252_28cc_c201_a07c_016f54efb94c["computeBalancedWait()"] 95f889b3_eae3_1bd8_4f15_602c55f0e60f -->|calls| 69a96252_28cc_c201_a07c_016f54efb94c e0808444_5985_0d26_adac_0697fe4d503a["submitWrite()"] 95f889b3_eae3_1bd8_4f15_602c55f0e60f -->|calls| e0808444_5985_0d26_adac_0697fe4d503a style 95f889b3_eae3_1bd8_4f15_602c55f0e60f fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
handler/src/main/java/io/netty/handler/traffic/GlobalChannelTrafficShapingHandler.java lines 650–691
@Override
public void write(final ChannelHandlerContext ctx, final Object msg, final ChannelPromise promise)
throws Exception {
long size = calculateSize(msg);
long now = TrafficCounter.milliSecondFromNano();
if (size > 0) {
// compute the number of ms to wait before continue with the channel
long waitGlobal = trafficCounter.writeTimeToWait(size, getWriteLimit(), maxTime, now);
Integer key = ctx.channel().hashCode();
PerChannel perChannel = channelQueues.get(key);
long wait = 0;
if (perChannel != null) {
wait = perChannel.channelTrafficCounter.writeTimeToWait(size, writeChannelLimit, maxTime, now);
if (writeDeviationActive) {
// now try to balance between the channels
long maxLocalWrite;
maxLocalWrite = perChannel.channelTrafficCounter.cumulativeWrittenBytes();
long maxGlobalWrite = cumulativeWrittenBytes.get();
if (maxLocalWrite <= 0) {
maxLocalWrite = 0;
}
if (maxGlobalWrite < maxLocalWrite) {
maxGlobalWrite = maxLocalWrite;
}
wait = computeBalancedWait(maxLocalWrite, maxGlobalWrite, wait);
}
}
if (wait < waitGlobal) {
wait = waitGlobal;
}
if (wait >= MINIMAL_WAIT) {
if (logger.isDebugEnabled()) {
logger.debug("Write suspend: " + wait + ':' + ctx.channel().config().isAutoRead() + ':'
+ isHandlerActive(ctx));
}
submitWrite(ctx, msg, size, wait, now, promise);
return;
}
}
// to maintain order of write
submitWrite(ctx, msg, size, 0, now, promise);
}
Domain
Subdomains
Source
Frequently Asked Questions
What does write() do?
write() is a function in the netty codebase, defined in handler/src/main/java/io/netty/handler/traffic/GlobalChannelTrafficShapingHandler.java.
Where is write() defined?
write() is defined in handler/src/main/java/io/netty/handler/traffic/GlobalChannelTrafficShapingHandler.java at line 650.
What does write() call?
write() calls 2 function(s): computeBalancedWait, submitWrite.
What calls write()?
write() is called by 3 function(s): handlerRemoved, sendAllValid, submitWrite.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free