package okhttp3.internal.ws;

import com.mstar.android.tv.TvLanguage;
import java.io.Closeable;
import java.io.IOException;
import java.util.Random;
import kotlin.jvm.internal.l;
import okio.C0688f;
import okio.g;
import okio.i;

/* JADX INFO: loaded from: classes2.dex */
public final class WebSocketWriter implements Closeable {
    private final boolean isClient;
    private final C0688f.a maskCursor;
    private final byte[] maskKey;
    private final C0688f messageBuffer;
    private MessageDeflater messageDeflater;
    private final long minimumDeflateSize;
    private final boolean noContextTakeover;
    private final boolean perMessageDeflate;
    private final Random random;
    private final g sink;
    private final C0688f sinkBuffer;
    private boolean writerClosed;

    public WebSocketWriter(boolean z2, g sink, Random random, boolean z3, boolean z4, long j2) {
        l.e(sink, "sink");
        l.e(random, "random");
        this.isClient = z2;
        this.sink = sink;
        this.random = random;
        this.perMessageDeflate = z3;
        this.noContextTakeover = z4;
        this.minimumDeflateSize = j2;
        this.messageBuffer = new C0688f();
        this.sinkBuffer = sink.getBuffer();
        this.maskKey = z2 ? new byte[4] : null;
        this.maskCursor = z2 ? new C0688f.a() : null;
    }

    private final void writeControlFrame(int i2, i iVar) throws IOException {
        if (this.writerClosed) {
            throw new IOException("closed");
        }
        int iS = iVar.s();
        if (!(((long) iS) <= 125)) {
            throw new IllegalArgumentException("Payload size must be less than or equal to 125");
        }
        this.sinkBuffer.writeByte(i2 | 128);
        if (this.isClient) {
            this.sinkBuffer.writeByte(iS | 128);
            Random random = this.random;
            byte[] bArr = this.maskKey;
            l.b(bArr);
            random.nextBytes(bArr);
            this.sinkBuffer.write(this.maskKey);
            if (iS > 0) {
                long jG = this.sinkBuffer.G();
                this.sinkBuffer.write(iVar);
                C0688f c0688f = this.sinkBuffer;
                C0688f.a aVar = this.maskCursor;
                l.b(aVar);
                c0688f.u(aVar);
                this.maskCursor.d(jG);
                WebSocketProtocol.INSTANCE.toggleMask(this.maskCursor, this.maskKey);
                this.maskCursor.close();
            }
        } else {
            this.sinkBuffer.writeByte(iS);
            this.sinkBuffer.write(iVar);
        }
        this.sink.flush();
    }

    @Override // java.io.Closeable, java.lang.AutoCloseable
    public void close() throws Throwable {
        MessageDeflater messageDeflater = this.messageDeflater;
        if (messageDeflater != null) {
            messageDeflater.close();
        }
    }

    public final Random getRandom() {
        return this.random;
    }

    public final g getSink() {
        return this.sink;
    }

    public final void writeClose(int i2, i iVar) throws IOException {
        i iVarB = i.f6031x;
        if (i2 != 0 || iVar != null) {
            if (i2 != 0) {
                WebSocketProtocol.INSTANCE.validateCloseCode(i2);
            }
            C0688f c0688f = new C0688f();
            c0688f.writeShort(i2);
            if (iVar != null) {
                c0688f.write(iVar);
            }
            iVarB = c0688f.B();
        }
        try {
            writeControlFrame(8, iVarB);
        } finally {
            this.writerClosed = true;
        }
    }

    public final void writeMessageFrame(int i2, i data) throws IOException {
        l.e(data, "data");
        if (this.writerClosed) {
            throw new IOException("closed");
        }
        this.messageBuffer.write(data);
        int i3 = i2 | 128;
        if (this.perMessageDeflate && data.s() >= this.minimumDeflateSize) {
            MessageDeflater messageDeflater = this.messageDeflater;
            if (messageDeflater == null) {
                messageDeflater = new MessageDeflater(this.noContextTakeover);
                this.messageDeflater = messageDeflater;
            }
            messageDeflater.deflate(this.messageBuffer);
            i3 = i2 | TvLanguage.GORONTALO;
        }
        long jG = this.messageBuffer.G();
        this.sinkBuffer.writeByte(i3);
        int i4 = this.isClient ? 128 : 0;
        if (jG <= 125) {
            this.sinkBuffer.writeByte(i4 | ((int) jG));
        } else if (jG <= WebSocketProtocol.PAYLOAD_SHORT_MAX) {
            this.sinkBuffer.writeByte(i4 | 126);
            this.sinkBuffer.writeShort((int) jG);
        } else {
            this.sinkBuffer.writeByte(i4 | 127);
            this.sinkBuffer.V(jG);
        }
        if (this.isClient) {
            Random random = this.random;
            byte[] bArr = this.maskKey;
            l.b(bArr);
            random.nextBytes(bArr);
            this.sinkBuffer.write(this.maskKey);
            if (jG > 0) {
                C0688f c0688f = this.messageBuffer;
                C0688f.a aVar = this.maskCursor;
                l.b(aVar);
                c0688f.u(aVar);
                this.maskCursor.d(0L);
                WebSocketProtocol.INSTANCE.toggleMask(this.maskCursor, this.maskKey);
                this.maskCursor.close();
            }
        }
        this.sinkBuffer.write(this.messageBuffer, jG);
        this.sink.emit();
    }

    public final void writePing(i payload) throws IOException {
        l.e(payload, "payload");
        writeControlFrame(9, payload);
    }

    public final void writePong(i payload) throws IOException {
        l.e(payload, "payload");
        writeControlFrame(10, payload);
    }
}
