package io.netty.handler.codec.serialization;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufOutputStream;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.util.Attribute;
import io.netty.util.AttributeKey;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;

/* JADX INFO: loaded from: classes.dex */
public class CompatibleObjectEncoder extends MessageToByteEncoder<Serializable> {
    private static final AttributeKey<ObjectOutputStream> OOS = AttributeKey.valueOf(CompatibleObjectEncoder.class, "OOS");
    private final int resetInterval;
    private int writtenObjects;

    public CompatibleObjectEncoder() {
        this(16);
    }

    protected ObjectOutputStream newObjectOutputStream(OutputStream outputStream) throws Exception {
        return new ObjectOutputStream(outputStream);
    }

    public CompatibleObjectEncoder(int i) {
        if (i >= 0) {
            this.resetInterval = i;
            return;
        }
        throw new IllegalArgumentException("resetInterval: " + i);
    }

    /* JADX INFO: Access modifiers changed from: protected */
    @Override // io.netty.handler.codec.MessageToByteEncoder
    public void encode(ChannelHandlerContext channelHandlerContext, Serializable serializable, ByteBuf byteBuf) throws Exception {
        Attribute attributeAttr = channelHandlerContext.attr(OOS);
        ObjectOutputStream objectOutputStreamNewObjectOutputStream = (ObjectOutputStream) attributeAttr.get();
        if (objectOutputStreamNewObjectOutputStream == null) {
            objectOutputStreamNewObjectOutputStream = newObjectOutputStream(new ByteBufOutputStream(byteBuf));
            ObjectOutputStream objectOutputStream = (ObjectOutputStream) attributeAttr.setIfAbsent(objectOutputStreamNewObjectOutputStream);
            if (objectOutputStream != null) {
                objectOutputStreamNewObjectOutputStream = objectOutputStream;
            }
        }
        synchronized (objectOutputStreamNewObjectOutputStream) {
            int i = this.resetInterval;
            if (i != 0) {
                int i2 = this.writtenObjects + 1;
                this.writtenObjects = i2;
                if (i2 % i == 0) {
                    objectOutputStreamNewObjectOutputStream.reset();
                }
            }
            objectOutputStreamNewObjectOutputStream.writeObject(serializable);
            objectOutputStreamNewObjectOutputStream.flush();
        }
    }
}
