Home / Class/ Socks4ClientEncoder Class — netty Architecture

Socks4ClientEncoder Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  290d24f3_ad46_b684_ff61_0cb22ac2823c["Socks4ClientEncoder"]
  beb1b69f_c472_d4f8_58a9_481646c4616c["Socks4ClientEncoder.java"]
  290d24f3_ad46_b684_ff61_0cb22ac2823c -->|defined in| beb1b69f_c472_d4f8_58a9_481646c4616c
  050cedc9_2182_1118_3c95_ca024b3c415f["Socks4ClientEncoder()"]
  290d24f3_ad46_b684_ff61_0cb22ac2823c -->|method| 050cedc9_2182_1118_3c95_ca024b3c415f
  4d5a76d9_f907_b020_9b5e_9dddf5760d1a["encode()"]
  290d24f3_ad46_b684_ff61_0cb22ac2823c -->|method| 4d5a76d9_f907_b020_9b5e_9dddf5760d1a

Relationship Graph

Source Code

codec-socks/src/main/java/io/netty/handler/codec/socksx/v4/Socks4ClientEncoder.java lines 29–60

@Sharable
public final class Socks4ClientEncoder extends MessageToByteEncoder<Socks4CommandRequest> {

    /**
     * The singleton instance of {@link Socks4ClientEncoder}
     */
    public static final Socks4ClientEncoder INSTANCE = new Socks4ClientEncoder();

    private static final byte[] IPv4_DOMAIN_MARKER = {0x00, 0x00, 0x00, 0x01};

    private Socks4ClientEncoder() {
        super(Socks4CommandRequest.class);
    }

    @Override
    protected void encode(ChannelHandlerContext ctx, Socks4CommandRequest msg, ByteBuf out) throws Exception {
        out.writeByte(msg.version().byteValue());
        out.writeByte(msg.type().byteValue());
        ByteBufUtil.writeShortBE(out, msg.dstPort());
        if (NetUtil.isValidIpV4Address(msg.dstAddr())) {
            out.writeBytes(NetUtil.createByteArrayFromIpAddressString(msg.dstAddr()));
            ByteBufUtil.writeAscii(out, msg.userId());
            out.writeByte(0);
        } else {
            out.writeBytes(IPv4_DOMAIN_MARKER);
            ByteBufUtil.writeAscii(out, msg.userId());
            out.writeByte(0);
            ByteBufUtil.writeAscii(out, msg.dstAddr());
            out.writeByte(0);
        }
    }
}

Frequently Asked Questions

What is the Socks4ClientEncoder class?
Socks4ClientEncoder is a class in the netty codebase, defined in codec-socks/src/main/java/io/netty/handler/codec/socksx/v4/Socks4ClientEncoder.java.
Where is Socks4ClientEncoder defined?
Socks4ClientEncoder is defined in codec-socks/src/main/java/io/netty/handler/codec/socksx/v4/Socks4ClientEncoder.java at line 29.

Analyze Your Own Codebase

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

Try Supermodel Free