Socks5ServerEncoder Class — netty Architecture
Architecture documentation for the Socks5ServerEncoder class in Socks5ServerEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74["Socks5ServerEncoder"] 512b1a27_2a7d_d489_98de_f247deca9d8a["Socks5ServerEncoder.java"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|defined in| 512b1a27_2a7d_d489_98de_f247deca9d8a a0008b68_ca0f_9b1c_227d_72ed644ccdc3["Socks5ServerEncoder()"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|method| a0008b68_ca0f_9b1c_227d_72ed644ccdc3 3c5f7779_e1bc_22f1_0206_ef73debff4d1["Socks5AddressEncoder()"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|method| 3c5f7779_e1bc_22f1_0206_ef73debff4d1 33d88147_b1e4_e0c2_2929_cc0fe97a48dc["encode()"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|method| 33d88147_b1e4_e0c2_2929_cc0fe97a48dc c93bc27f_3a91_4a91_6fb4_7f17b7e2a769["encodeAuthMethodResponse()"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|method| c93bc27f_3a91_4a91_6fb4_7f17b7e2a769 6ebf1fd7_dcfa_594e_6d20_e59b3e8ee4c6["encodePasswordAuthResponse()"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|method| 6ebf1fd7_dcfa_594e_6d20_e59b3e8ee4c6 58b88a50_86b0_34d7_83c1_b26d1a4c42f9["encodePrivateAuthResponse()"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|method| 58b88a50_86b0_34d7_83c1_b26d1a4c42f9 37a3e5d0_c2c0_6dc4_b582_562f19a2f1b2["encodeCommandResponse()"] 1cdfa3cc_d2e9_1ff0_108d_c82ab4a96f74 -->|method| 37a3e5d0_c2c0_6dc4_b582_562f19a2f1b2
Relationship Graph
Source Code
codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/Socks5ServerEncoder.java lines 31–101
@Sharable
public class Socks5ServerEncoder extends MessageToByteEncoder<Socks5Message> {
public static final Socks5ServerEncoder DEFAULT = new Socks5ServerEncoder(Socks5AddressEncoder.DEFAULT);
private final Socks5AddressEncoder addressEncoder;
/**
* Creates a new instance with the default {@link Socks5AddressEncoder}.
*/
protected Socks5ServerEncoder() {
this(Socks5AddressEncoder.DEFAULT);
}
/**
* Creates a new instance with the specified {@link Socks5AddressEncoder}.
*/
public Socks5ServerEncoder(Socks5AddressEncoder addressEncoder) {
super(Socks5Message.class);
this.addressEncoder = ObjectUtil.checkNotNull(addressEncoder, "addressEncoder");
}
/**
* Returns the {@link Socks5AddressEncoder} of this encoder.
*/
protected final Socks5AddressEncoder addressEncoder() {
return addressEncoder;
}
@Override
protected void encode(ChannelHandlerContext ctx, Socks5Message msg, ByteBuf out) throws Exception {
if (msg instanceof Socks5InitialResponse) {
encodeAuthMethodResponse((Socks5InitialResponse) msg, out);
} else if (msg instanceof Socks5PasswordAuthResponse) {
encodePasswordAuthResponse((Socks5PasswordAuthResponse) msg, out);
} else if (msg instanceof Socks5CommandResponse) {
encodeCommandResponse((Socks5CommandResponse) msg, out);
} else if (msg instanceof Socks5PrivateAuthResponse) {
encodePrivateAuthResponse((Socks5PrivateAuthResponse) msg, out);
} else {
throw new EncoderException("unsupported message type: " + StringUtil.simpleClassName(msg));
}
}
private static void encodeAuthMethodResponse(Socks5InitialResponse msg, ByteBuf out) {
out.writeByte(msg.version().byteValue());
out.writeByte(msg.authMethod().byteValue());
}
private static void encodePasswordAuthResponse(Socks5PasswordAuthResponse msg, ByteBuf out) {
out.writeByte(0x01);
out.writeByte(msg.status().byteValue());
}
private static void encodePrivateAuthResponse(Socks5PrivateAuthResponse msg, ByteBuf out) {
out.writeByte(0x01);
out.writeByte(msg.status().byteValue());
}
private void encodeCommandResponse(Socks5CommandResponse msg, ByteBuf out) throws Exception {
out.writeByte(msg.version().byteValue());
out.writeByte(msg.status().byteValue());
out.writeByte(0x00);
final Socks5AddressType bndAddrType = msg.bndAddrType();
out.writeByte(bndAddrType.byteValue());
addressEncoder.encodeAddress(bndAddrType, msg.bndAddr(), out);
ByteBufUtil.writeShortBE(out, msg.bndPort());
}
}
Source
Frequently Asked Questions
What is the Socks5ServerEncoder class?
Socks5ServerEncoder is a class in the netty codebase, defined in codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/Socks5ServerEncoder.java.
Where is Socks5ServerEncoder defined?
Socks5ServerEncoder is defined in codec-socks/src/main/java/io/netty/handler/codec/socksx/v5/Socks5ServerEncoder.java at line 31.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free