Home / Class/ TcpDnsQueryEncoder Class — netty Architecture

TcpDnsQueryEncoder Class — netty Architecture

Architecture documentation for the TcpDnsQueryEncoder class in TcpDnsQueryEncoder.java from the netty codebase.

Entity Profile

Dependency Diagram

graph TD
  ed85728f_8833_deba_ce65_210c2d56b62e["TcpDnsQueryEncoder"]
  5f3c12ef_4a76_927a_2d0c_2f0ab88991ae["TcpDnsQueryEncoder.java"]
  ed85728f_8833_deba_ce65_210c2d56b62e -->|defined in| 5f3c12ef_4a76_927a_2d0c_2f0ab88991ae
  cc2ed799_7650_a366_c34c_2705bb47afa7["TcpDnsQueryEncoder()"]
  ed85728f_8833_deba_ce65_210c2d56b62e -->|method| cc2ed799_7650_a366_c34c_2705bb47afa7
  f35dbdea_2457_03c8_04da_f80ccfc62524["encode()"]
  ed85728f_8833_deba_ce65_210c2d56b62e -->|method| f35dbdea_2457_03c8_04da_f80ccfc62524
  5ffd82a4_c055_a33c_82f0_3ec8dbdf3faa["ByteBuf()"]
  ed85728f_8833_deba_ce65_210c2d56b62e -->|method| 5ffd82a4_c055_a33c_82f0_3ec8dbdf3faa

Relationship Graph

Source Code

codec-dns/src/main/java/io/netty/handler/codec/dns/TcpDnsQueryEncoder.java lines 23–63

@ChannelHandler.Sharable
public final class TcpDnsQueryEncoder extends MessageToByteEncoder<DnsQuery> {

    private final DnsQueryEncoder encoder;

    /**
     * Creates a new encoder with {@linkplain DnsRecordEncoder#DEFAULT the default record encoder}.
     */
    public TcpDnsQueryEncoder() {
        this(DnsRecordEncoder.DEFAULT);
    }

    /**
     * Creates a new encoder with the specified {@code recordEncoder}.
     */
    public TcpDnsQueryEncoder(DnsRecordEncoder recordEncoder) {
        super(DnsQuery.class);
        this.encoder = new DnsQueryEncoder(recordEncoder);
    }

    @Override
    protected void encode(ChannelHandlerContext ctx, DnsQuery msg, ByteBuf out) throws Exception {
        // Length is two octets as defined by RFC-7766
        // See https://tools.ietf.org/html/rfc7766#section-8
        out.writerIndex(out.writerIndex() + 2);
        encoder.encode(msg, out);

        // Now fill in the correct length based on the amount of data that we wrote the ByteBuf.
        out.setShort(0, out.readableBytes() - 2);
    }

    @Override
    protected ByteBuf allocateBuffer(ChannelHandlerContext ctx, @SuppressWarnings("unused") DnsQuery msg,
                                     boolean preferDirect) {
        if (preferDirect) {
            return ctx.alloc().ioBuffer(1024);
        } else {
            return ctx.alloc().heapBuffer(1024);
        }
    }
}

Frequently Asked Questions

What is the TcpDnsQueryEncoder class?
TcpDnsQueryEncoder is a class in the netty codebase, defined in codec-dns/src/main/java/io/netty/handler/codec/dns/TcpDnsQueryEncoder.java.
Where is TcpDnsQueryEncoder defined?
TcpDnsQueryEncoder is defined in codec-dns/src/main/java/io/netty/handler/codec/dns/TcpDnsQueryEncoder.java at line 23.

Analyze Your Own Codebase

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

Try Supermodel Free