package io.netty.handler.codec.spdy;

import g.a.a.a.a;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufAllocator;
import io.netty.buffer.Unpooled;
import java.util.zip.Deflater;

/* JADX INFO: loaded from: classes.dex */
public class SpdyHeaderBlockZlibEncoder extends SpdyHeaderBlockRawEncoder {
    private final Deflater compressor;
    private boolean finished;

    public SpdyHeaderBlockZlibEncoder(SpdyVersion spdyVersion, int i2) {
        super(spdyVersion);
        if (i2 < 0 || i2 > 9) {
            throw new IllegalArgumentException(a.n("compressionLevel: ", i2, " (expected: 0-9)"));
        }
        Deflater deflater = new Deflater(i2);
        this.compressor = deflater;
        deflater.setDictionary(SpdyCodecUtil.SPDY_DICT);
    }

    private boolean compressInto(ByteBuf byteBuf) {
        byte[] bArrArray = byteBuf.array();
        int iWriterIndex = byteBuf.writerIndex() + byteBuf.arrayOffset();
        int iWritableBytes = byteBuf.writableBytes();
        int iDeflate = this.compressor.deflate(bArrArray, iWriterIndex, iWritableBytes, 2);
        byteBuf.writerIndex(byteBuf.writerIndex() + iDeflate);
        return iDeflate == iWritableBytes;
    }

    private ByteBuf encode(ByteBufAllocator byteBufAllocator, int i2) {
        ByteBuf byteBufHeapBuffer = byteBufAllocator.heapBuffer(i2);
        while (compressInto(byteBufHeapBuffer)) {
            try {
                byteBufHeapBuffer.ensureWritable(byteBufHeapBuffer.capacity() << 1);
            } catch (Throwable th) {
                byteBufHeapBuffer.release();
                throw th;
            }
        }
        return byteBufHeapBuffer;
    }

    private int setInput(ByteBuf byteBuf) {
        int i2 = byteBuf.readableBytes();
        if (byteBuf.hasArray()) {
            this.compressor.setInput(byteBuf.array(), byteBuf.readerIndex() + byteBuf.arrayOffset(), i2);
        } else {
            byte[] bArr = new byte[i2];
            byteBuf.getBytes(byteBuf.readerIndex(), bArr);
            this.compressor.setInput(bArr, 0, i2);
        }
        return i2;
    }

    @Override // io.netty.handler.codec.spdy.SpdyHeaderBlockRawEncoder, io.netty.handler.codec.spdy.SpdyHeaderBlockEncoder
    public ByteBuf encode(ByteBufAllocator byteBufAllocator, SpdyHeadersFrame spdyHeadersFrame) {
        if (spdyHeadersFrame == null) {
            throw new IllegalArgumentException("frame");
        }
        if (this.finished) {
            return Unpooled.EMPTY_BUFFER;
        }
        ByteBuf byteBufEncode = super.encode(byteBufAllocator, spdyHeadersFrame);
        try {
            return !byteBufEncode.isReadable() ? Unpooled.EMPTY_BUFFER : encode(byteBufAllocator, setInput(byteBufEncode));
        } finally {
            byteBufEncode.release();
        }
    }

    @Override // io.netty.handler.codec.spdy.SpdyHeaderBlockRawEncoder, io.netty.handler.codec.spdy.SpdyHeaderBlockEncoder
    public void end() {
        if (this.finished) {
            return;
        }
        this.finished = true;
        this.compressor.end();
        super.end();
    }
}
