Home / Function/ writeDynamicFrame() — netty Function Reference

writeDynamicFrame() — netty Function Reference

Architecture documentation for the writeDynamicFrame() function in Http3FrameCodec.java from the netty codebase.

Function java Buffer Allocators calls 1 called by 3

Entity Profile

Dependency Diagram

graph TD
  f44f2a24_b15d_496d_23b1_303e5eefeff1["writeDynamicFrame()"]
  57499e74_1040_f300_12bb_215179e108be["Http3FrameCodec"]
  f44f2a24_b15d_496d_23b1_303e5eefeff1 -->|defined in| 57499e74_1040_f300_12bb_215179e108be
  f772ada9_5a1c_1f5c_b2c6_0b0a22351097["writeHeadersFrame()"]
  f772ada9_5a1c_1f5c_b2c6_0b0a22351097 -->|calls| f44f2a24_b15d_496d_23b1_303e5eefeff1
  3a9fc200_3d56_3723_4775_8d1d240d23c5["writeSettingsFrame()"]
  3a9fc200_3d56_3723_4775_8d1d240d23c5 -->|calls| f44f2a24_b15d_496d_23b1_303e5eefeff1
  afb1f1c7_6160_0aef_d842_68208d48d6c3["writePushPromiseFrame()"]
  afb1f1c7_6160_0aef_d842_68208d48d6c3 -->|calls| f44f2a24_b15d_496d_23b1_303e5eefeff1
  a234e34e_4b68_a34a_5b98_49872289b7ac["write()"]
  f44f2a24_b15d_496d_23b1_303e5eefeff1 -->|calls| a234e34e_4b68_a34a_5b98_49872289b7ac
  style f44f2a24_b15d_496d_23b1_303e5eefeff1 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java lines 517–544

    private static <T extends Http3Frame> void writeDynamicFrame(ChannelHandlerContext ctx, long type, T frame,
                                                                 BiFunction<T, ByteBuf, Boolean> writer,
                                                                 ChannelPromise promise) {
        ByteBuf out = ctx.alloc().directBuffer();
        int initialWriterIndex = out.writerIndex();
        // Move 16 bytes forward as this is the maximum amount we could ever need for the type + payload length.
        int payloadStartIndex = initialWriterIndex + 16;
        out.writerIndex(payloadStartIndex);

        if (writer.apply(frame, out)) {
            int finalWriterIndex = out.writerIndex();
            int payloadLength = finalWriterIndex - payloadStartIndex;
            int len = numBytesForVariableLengthInteger(payloadLength);
            out.writerIndex(payloadStartIndex - len);
            writeVariableLengthInteger(out, payloadLength, len);

            int typeLength = numBytesForVariableLengthInteger(type);
            int startIndex = payloadStartIndex - len - typeLength;
            out.writerIndex(startIndex);
            writeVariableLengthInteger(out, type, typeLength);

            out.setIndex(startIndex, finalWriterIndex);
            ctx.write(out, promise);
        } else {
            // We failed to encode, lets release the buffer so we dont leak.
            out.release();
        }
    }

Domain

Subdomains

Calls

Frequently Asked Questions

What does writeDynamicFrame() do?
writeDynamicFrame() is a function in the netty codebase, defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java.
Where is writeDynamicFrame() defined?
writeDynamicFrame() is defined in codec-http3/src/main/java/io/netty/handler/codec/http3/Http3FrameCodec.java at line 517.
What does writeDynamicFrame() call?
writeDynamicFrame() calls 1 function(s): write.
What calls writeDynamicFrame()?
writeDynamicFrame() is called by 3 function(s): writeHeadersFrame, writePushPromiseFrame, writeSettingsFrame.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free