Home / Class/ DatagramPacketEncoder Class — netty Architecture

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);

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