DatagramPacketEncoder Class — netty Architecture
Architecture documentation for the DatagramPacketEncoder class in DatagramPacketEncoder.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde["DatagramPacketEncoder"] caef233f_aa8a_8fe0_8ab7_45f3fd77f55b["DatagramPacketEncoder.java"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|defined in| caef233f_aa8a_8fe0_8ab7_45f3fd77f55b 977be1ad_7065_0173_343f_245d9fa0c98f["DatagramPacketEncoder()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 977be1ad_7065_0173_343f_245d9fa0c98f 0cdb8c13_8213_d991_3239_84308e6e5c88["acceptOutboundMessage()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 0cdb8c13_8213_d991_3239_84308e6e5c88 acee52ad_6802_b5a7_8d46_6417d93bad99["encode()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| acee52ad_6802_b5a7_8d46_6417d93bad99 25f68543_f6a1_73f1_76ee_470833bed9aa["bind()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 25f68543_f6a1_73f1_76ee_470833bed9aa 86d39c90_7d6a_1c35_7d46_aaa2911b6c1e["connect()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 86d39c90_7d6a_1c35_7d46_aaa2911b6c1e 515cb71c_a2d9_2c4c_2ee1_72a90de9fad4["disconnect()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 515cb71c_a2d9_2c4c_2ee1_72a90de9fad4 d906a5a1_59fc_d984_a473_b985d8552141["close()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| d906a5a1_59fc_d984_a473_b985d8552141 21f69bff_e496_e9c6_010e_b524faac289e["deregister()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 21f69bff_e496_e9c6_010e_b524faac289e 5d80231b_ee00_0fc0_f35f_ddeaf1681443["read()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 5d80231b_ee00_0fc0_f35f_ddeaf1681443 0a09648a_c521_31d1_33f6_9fe76eb6b274["flush()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 0a09648a_c521_31d1_33f6_9fe76eb6b274 a014937e_e2c3_0942_cfdd_47253193adfc["handlerAdded()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| a014937e_e2c3_0942_cfdd_47253193adfc a08c0ed3_858a_2a0f_5c8b_d76218ec88f0["handlerRemoved()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| a08c0ed3_858a_2a0f_5c8b_d76218ec88f0 3a54e5d9_41da_b4d8_160d_e9f63cae020f["exceptionCaught()"] 6ccdafb0_22c6_e381_7013_2cd0a3ddcfde -->|method| 3a54e5d9_41da_b4d8_160d_e9f63cae020f
Relationship Graph
Source Code
codec-base/src/main/java/io/netty/handler/codec/DatagramPacketEncoder.java lines 45–147
public class DatagramPacketEncoder<M> extends MessageToMessageEncoder<AddressedEnvelope<M, InetSocketAddress>> {
private final MessageToMessageEncoder<? super M> encoder;
/**
* Create an encoder that encodes the content in {@link AddressedEnvelope} to {@link DatagramPacket} using
* the specified message encoder.
*
* @param encoder the specified message encoder
*/
public DatagramPacketEncoder(MessageToMessageEncoder<? super M> encoder) {
this.encoder = checkNotNull(encoder, "encoder");
}
@Override
public boolean acceptOutboundMessage(Object msg) throws Exception {
if (super.acceptOutboundMessage(msg)) {
@SuppressWarnings("rawtypes")
AddressedEnvelope envelope = (AddressedEnvelope) msg;
return encoder.acceptOutboundMessage(envelope.content())
&& (envelope.sender() instanceof InetSocketAddress || envelope.sender() == null)
&& envelope.recipient() instanceof InetSocketAddress;
}
return false;
}
@Override
protected void encode(
ChannelHandlerContext ctx, AddressedEnvelope<M, InetSocketAddress> msg, List<Object> out) throws Exception {
assert out.isEmpty();
encoder.encode(ctx, msg.content(), out);
if (out.size() != 1) {
throw new EncoderException(
StringUtil.simpleClassName(encoder) + " must produce only one message.");
}
Object content = out.get(0);
if (content instanceof ByteBuf) {
// Replace the ByteBuf with a DatagramPacket.
out.set(0, new DatagramPacket((ByteBuf) content, msg.recipient(), msg.sender()));
} else {
throw new EncoderException(
StringUtil.simpleClassName(encoder) + " must produce only ByteBuf.");
}
}
@Override
public void bind(ChannelHandlerContext ctx, SocketAddress localAddress, ChannelPromise promise) throws Exception {
encoder.bind(ctx, localAddress, promise);
}
@Override
public void connect(
ChannelHandlerContext ctx, SocketAddress remoteAddress,
SocketAddress localAddress, ChannelPromise promise) throws Exception {
encoder.connect(ctx, remoteAddress, localAddress, promise);
}
@Override
public void disconnect(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
encoder.disconnect(ctx, promise);
}
@Override
public void close(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
encoder.close(ctx, promise);
}
@Override
public void deregister(ChannelHandlerContext ctx, ChannelPromise promise) throws Exception {
encoder.deregister(ctx, promise);
}
@Override
public void read(ChannelHandlerContext ctx) throws Exception {
encoder.read(ctx);
}
@Override
public void flush(ChannelHandlerContext ctx) throws Exception {
encoder.flush(ctx);
Source
Frequently Asked Questions
What is the DatagramPacketEncoder class?
DatagramPacketEncoder is a class in the netty codebase, defined in codec-base/src/main/java/io/netty/handler/codec/DatagramPacketEncoder.java.
Where is DatagramPacketEncoder defined?
DatagramPacketEncoder is defined in codec-base/src/main/java/io/netty/handler/codec/DatagramPacketEncoder.java at line 45.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free