package okhttp3.internal.ws;

import h.i;
import h.x.d.k;
import i.f;
import i.g;
import java.io.Closeable;
import java.io.IOException;
import java.util.Random;

/* JADX INFO: compiled from: WebSocketWriter.kt */
/* JADX INFO: loaded from: classes.dex */
@i(bv = {1, 0, 3}, d1 = {"\u0000^\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\f\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0012\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\t\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\t\u0018\u00002\u00020\u0001B7\u0012\u0006\u0010\u0015\u001a\u00020\u0014\u0012\u0006\u0010.\u001a\u00020-\u0012\u0006\u0010)\u001a\u00020(\u0012\u0006\u0010'\u001a\u00020\u0014\u0012\u0006\u0010&\u001a\u00020\u0014\u0012\u0006\u0010$\u001a\u00020#¢\u0006\u0004\b4\u00105J\u000f\u0010\u0003\u001a\u00020\u0002H\u0016¢\u0006\u0004\b\u0003\u0010\u0004J\u001f\u0010\t\u001a\u00020\u00022\u0006\u0010\u0006\u001a\u00020\u00052\b\u0010\b\u001a\u0004\u0018\u00010\u0007¢\u0006\u0004\b\t\u0010\nJ\u001f\u0010\r\u001a\u00020\u00022\u0006\u0010\u000b\u001a\u00020\u00052\u0006\u0010\f\u001a\u00020\u0007H\u0002¢\u0006\u0004\b\r\u0010\nJ\u001d\u0010\u0010\u001a\u00020\u00022\u0006\u0010\u000e\u001a\u00020\u00052\u0006\u0010\u000f\u001a\u00020\u0007¢\u0006\u0004\b\u0010\u0010\nJ\u0015\u0010\u0011\u001a\u00020\u00022\u0006\u0010\f\u001a\u00020\u0007¢\u0006\u0004\b\u0011\u0010\u0012J\u0015\u0010\u0013\u001a\u00020\u00022\u0006\u0010\f\u001a\u00020\u0007¢\u0006\u0004\b\u0013\u0010\u0012R\u0016\u0010\u0015\u001a\u00020\u00148\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0015\u0010\u0016R\u0018\u0010\u0018\u001a\u0004\u0018\u00010\u00178\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u0018\u0010\u0019R\u0018\u0010\u001b\u001a\u0004\u0018\u00010\u001a8\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u001b\u0010\u001cR\u0016\u0010\u001e\u001a\u00020\u001d8\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b\u001e\u0010\u001fR\u0018\u0010!\u001a\u0004\u0018\u00010 8\u0002@\u0002X\u0082\u000e¢\u0006\u0006\n\u0004\b!\u0010\"R\u0016\u0010$\u001a\u00020#8\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b$\u0010%R\u0016\u0010&\u001a\u00020\u00148\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b&\u0010\u0016R\u0016\u0010'\u001a\u00020\u00148\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b'\u0010\u0016R\u0019\u0010)\u001a\u00020(8\u0006@\u0006¢\u0006\f\n\u0004\b)\u0010*\u001a\u0004\b+\u0010,R\u0019\u0010.\u001a\u00020-8\u0006@\u0006¢\u0006\f\n\u0004\b.\u0010/\u001a\u0004\b0\u00101R\u0016\u00102\u001a\u00020\u001d8\u0002@\u0002X\u0082\u0004¢\u0006\u0006\n\u0004\b2\u0010\u001fR\u0016\u00103\u001a\u00020\u00148\u0002@\u0002X\u0082\u000e¢\u0006\u0006\n\u0004\b3\u0010\u0016¨\u00066"}, d2 = {"Lokhttp3/internal/ws/WebSocketWriter;", "Ljava/io/Closeable;", "", "close", "()V", "", "code", "Lokio/ByteString;", "reason", "writeClose", "(ILokio/ByteString;)V", "opcode", "payload", "writeControlFrame", "formatOpcode", "data", "writeMessageFrame", "writePing", "(Lokio/ByteString;)V", "writePong", "", "isClient", "Z", "Lokio/Buffer$UnsafeCursor;", "maskCursor", "Lokio/Buffer$UnsafeCursor;", "", "maskKey", "[B", "Lokio/Buffer;", "messageBuffer", "Lokio/Buffer;", "Lokhttp3/internal/ws/MessageDeflater;", "messageDeflater", "Lokhttp3/internal/ws/MessageDeflater;", "", "minimumDeflateSize", "J", "noContextTakeover", "perMessageDeflate", "Ljava/util/Random;", "random", "Ljava/util/Random;", "getRandom", "()Ljava/util/Random;", "Lokio/BufferedSink;", "sink", "Lokio/BufferedSink;", "getSink", "()Lokio/BufferedSink;", "sinkBuffer", "writerClosed", "<init>", "(ZLokio/BufferedSink;Ljava/util/Random;ZZJ)V", "okhttp"}, k = 1, mv = {1, 1, 15}, pn = "", xi = 0, xs = "")
public final class WebSocketWriter implements Closeable {
    private final boolean isClient;
    private final f.a maskCursor;
    private final byte[] maskKey;
    private final f 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 f sinkBuffer;
    private boolean writerClosed;

    public WebSocketWriter(boolean z, g gVar, Random random, boolean z2, boolean z3, long j2) {
        k.d(gVar, "sink");
        k.d(random, "random");
        this.isClient = z;
        this.sink = gVar;
        this.random = random;
        this.perMessageDeflate = z2;
        this.noContextTakeover = z3;
        this.minimumDeflateSize = j2;
        this.messageBuffer = new f();
        this.sinkBuffer = this.sink.c();
        this.maskKey = this.isClient ? new byte[4] : null;
        this.maskCursor = this.isClient ? new f.a() : null;
    }

    private final void writeControlFrame(int i2, i.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".toString());
        }
        this.sinkBuffer.U(i2 | 128);
        if (this.isClient) {
            this.sinkBuffer.U(iS | 128);
            Random random = this.random;
            byte[] bArr = this.maskKey;
            k.b(bArr);
            random.nextBytes(bArr);
            this.sinkBuffer.S(this.maskKey);
            if (iS > 0) {
                long J = this.sinkBuffer.J();
                this.sinkBuffer.Q(iVar);
                f fVar = this.sinkBuffer;
                f.a aVar = this.maskCursor;
                k.b(aVar);
                fVar.x(aVar);
                this.maskCursor.d(J);
                WebSocketProtocol.INSTANCE.toggleMask(this.maskCursor, this.maskKey);
                this.maskCursor.close();
            }
        } else {
            this.sinkBuffer.U(iS);
            this.sinkBuffer.Q(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.i iVar) throws IOException {
        i.i iVarG = i.i.f1026g;
        if (i2 != 0 || iVar != null) {
            if (i2 != 0) {
                WebSocketProtocol.INSTANCE.validateCloseCode(i2);
            }
            f fVar = new f();
            fVar.c0(i2);
            if (iVar != null) {
                fVar.Q(iVar);
            }
            iVarG = fVar.g();
        }
        try {
            writeControlFrame(8, iVarG);
        } finally {
            this.writerClosed = true;
        }
    }

    public final void writeMessageFrame(int i2, i.i iVar) throws IOException {
        k.d(iVar, "data");
        if (this.writerClosed) {
            throw new IOException("closed");
        }
        this.messageBuffer.Q(iVar);
        int i3 = i2 | 128;
        if (this.perMessageDeflate && iVar.s() >= this.minimumDeflateSize) {
            MessageDeflater messageDeflater = this.messageDeflater;
            if (messageDeflater == null) {
                messageDeflater = new MessageDeflater(this.noContextTakeover);
                this.messageDeflater = messageDeflater;
            }
            messageDeflater.deflate(this.messageBuffer);
            i3 |= 64;
        }
        long J = this.messageBuffer.J();
        this.sinkBuffer.U(i3);
        int i4 = this.isClient ? 128 : 0;
        if (J <= 125) {
            this.sinkBuffer.U(((int) J) | i4);
        } else if (J <= WebSocketProtocol.PAYLOAD_SHORT_MAX) {
            this.sinkBuffer.U(i4 | 126);
            this.sinkBuffer.c0((int) J);
        } else {
            this.sinkBuffer.U(i4 | 127);
            this.sinkBuffer.a0(J);
        }
        if (this.isClient) {
            Random random = this.random;
            byte[] bArr = this.maskKey;
            k.b(bArr);
            random.nextBytes(bArr);
            this.sinkBuffer.S(this.maskKey);
            if (J > 0) {
                f fVar = this.messageBuffer;
                f.a aVar = this.maskCursor;
                k.b(aVar);
                fVar.x(aVar);
                this.maskCursor.d(0L);
                WebSocketProtocol.INSTANCE.toggleMask(this.maskCursor, this.maskKey);
                this.maskCursor.close();
            }
        }
        this.sinkBuffer.write(this.messageBuffer, J);
        this.sink.k();
    }

    public final void writePing(i.i iVar) throws IOException {
        k.d(iVar, "payload");
        writeControlFrame(9, iVar);
    }

    public final void writePong(i.i iVar) throws IOException {
        k.d(iVar, "payload");
        writeControlFrame(10, iVar);
    }
}
