Home / Class/ CompatibleObjectEncoder Class — netty Architecture

CompatibleObjectEncoder Class — netty Architecture

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

Entity Profile

Dependency Diagram

graph TD
  0155c035_2619_c9ea_3d74_ed7c8584336c["CompatibleObjectEncoder"]
  9fa200fe_49b4_6a66_328c_e5ccb92ce1ab["CompatibleObjectEncoder.java"]
  0155c035_2619_c9ea_3d74_ed7c8584336c -->|defined in| 9fa200fe_49b4_6a66_328c_e5ccb92ce1ab
  51205614_9c7b_7e6a_b012_0c3d7c0d96ba["CompatibleObjectEncoder()"]
  0155c035_2619_c9ea_3d74_ed7c8584336c -->|method| 51205614_9c7b_7e6a_b012_0c3d7c0d96ba
  51383669_7ff9_48b4_547a_e83f98a27dcc["ObjectOutputStream()"]
  0155c035_2619_c9ea_3d74_ed7c8584336c -->|method| 51383669_7ff9_48b4_547a_e83f98a27dcc
  980441d8_26ad_cccc_ff6a_e3d158892da9["encode()"]
  0155c035_2619_c9ea_3d74_ed7c8584336c -->|method| 980441d8_26ad_cccc_ff6a_e3d158892da9

Relationship Graph

Source Code

codec-base/src/main/java/io/netty/handler/codec/serialization/CompatibleObjectEncoder.java lines 47–102

@Deprecated
public class CompatibleObjectEncoder extends MessageToByteEncoder<Serializable> {
    private final int resetInterval;
    private int writtenObjects;

    /**
     * Creates a new instance with the reset interval of {@code 16}.
     */
    public CompatibleObjectEncoder() {
        this(16); // Reset at every sixteen writes
    }

    /**
     * Creates a new instance.
     *
     * @param resetInterval
     *        the number of objects between {@link ObjectOutputStream#reset()}.
     *        {@code 0} will disable resetting the stream, but the remote
     *        peer will be at the risk of getting {@link OutOfMemoryError} in
     *        the long term.
     */
    public CompatibleObjectEncoder(int resetInterval) {
        super(Serializable.class);
        this.resetInterval = checkPositiveOrZero(resetInterval, "resetInterval");
    }

    /**
     * Creates a new {@link ObjectOutputStream} which wraps the specified
     * {@link OutputStream}.  Override this method to use a subclass of the
     * {@link ObjectOutputStream}.
     */
    protected ObjectOutputStream newObjectOutputStream(OutputStream out) throws Exception {
        return new ObjectOutputStream(out);
    }

    @Override
    protected void encode(ChannelHandlerContext ctx, Serializable msg, ByteBuf out) throws Exception {
        // Suppress a warning about resource leak since oss is closed below
        ObjectOutputStream oos = newObjectOutputStream(
                new ByteBufOutputStream(out));
        try {
            if (resetInterval != 0) {
                // Resetting will prevent OOM on the receiving side.
                writtenObjects ++;
                if (writtenObjects % resetInterval == 0) {
                    oos.reset();
                }
            }

            oos.writeObject(msg);
            oos.flush();
        } finally {
            oos.close();
        }
    }
}

Frequently Asked Questions

What is the CompatibleObjectEncoder class?
CompatibleObjectEncoder is a class in the netty codebase, defined in codec-base/src/main/java/io/netty/handler/codec/serialization/CompatibleObjectEncoder.java.
Where is CompatibleObjectEncoder defined?
CompatibleObjectEncoder is defined in codec-base/src/main/java/io/netty/handler/codec/serialization/CompatibleObjectEncoder.java at line 47.

Analyze Your Own Codebase

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

Try Supermodel Free