WebSocketWriter.smali
.class public final Lokhttp3/internal/ws/WebSocketWriter;
.super Ljava/lang/Object;
.source "WebSocketWriter.kt"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
}
.end annotation
.annotation system Ldalvik/annotation/SourceDebugExtension;
value = "SMAP\nWebSocketWriter.kt\nKotlin\n*S Kotlin\n*F\n+ 1 WebSocketWriter.kt\nokhttp3/internal/ws/WebSocketWriter\n*L\n1#1,260:1\n*E\n"
.end annotation
.annotation runtime Lkotlin/Metadata;
bv = {
0x1,
0x0,
0x3
}
d1 = {
"\u0000\\\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0008\u0007\n\u0002\u0018\u0002\n\u0002\u0008\u0003\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0012\n\u0002\u0008\u0007\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0008\n\u0000\n\u0002\u0010\t\n\u0000\n\u0002\u0010\u0002\n\u0002\u0008\u0002\n\u0002\u0018\u0002\n\u0002\u0008\u000b\u0008\u0000\u0018\u00002\u00020\u0001:\u00012B\u001d\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u0012\u0006\u0010\u0006\u001a\u00020\u0007\u00a2\u0006\u0002\u0010\u0008J\u0016\u0010\u001e\u001a\u00020\u001f2\u0006\u0010 \u001a\u00020!2\u0006\u0010\"\u001a\u00020#J\u0018\u0010$\u001a\u00020%2\u0006\u0010&\u001a\u00020!2\u0008\u0010\'\u001a\u0004\u0018\u00010(J\u0018\u0010)\u001a\u00020%2\u0006\u0010*\u001a\u00020!2\u0006\u0010+\u001a\u00020(H\u0002J&\u0010,\u001a\u00020%2\u0006\u0010 \u001a\u00020!2\u0006\u0010-\u001a\u00020#2\u0006\u0010.\u001a\u00020\u00032\u0006\u0010/\u001a\u00020\u0003J\u000e\u00100\u001a\u00020%2\u0006\u0010+\u001a\u00020(J\u000e\u00101\u001a\u00020%2\u0006\u0010+\u001a\u00020(R\u001a\u0010\t\u001a\u00020\u0003X\u0086\u000e\u00a2\u0006\u000e\n\u0000\u001a\u0004\u0008\n\u0010\u000b\"\u0004\u0008\u000c\u0010\rR\u0011\u0010\u000e\u001a\u00020\u000f\u00a2\u0006\u0008\n\u0000\u001a\u0004\u0008\u0010\u0010\u0011R\u0012\u0010\u0012\u001a\u00060\u0013R\u00020\u0000X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u0002\u001a\u00020\u0003X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u0010\u0010\u0014\u001a\u0004\u0018\u00010\u0015X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u0010\u0010\u0016\u001a\u0004\u0018\u00010\u0017X\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u0011\u0010\u0006\u001a\u00020\u0007\u00a2\u0006\u0008\n\u0000\u001a\u0004\u0008\u0018\u0010\u0019R\u0011\u0010\u0004\u001a\u00020\u0005\u00a2\u0006\u0008\n\u0000\u001a\u0004\u0008\u001a\u0010\u001bR\u000e\u0010\u001c\u001a\u00020\u000fX\u0082\u0004\u00a2\u0006\u0002\n\u0000R\u000e\u0010\u001d\u001a\u00020\u0003X\u0082\u000e\u00a2\u0006\u0002\n\u0000\u00a8\u00063"
}
d2 = {
"Lokhttp3/internal/ws/WebSocketWriter;",
"",
"isClient",
"",
"sink",
"Lokio/BufferedSink;",
"random",
"Ljava/util/Random;",
"(ZLokio/BufferedSink;Ljava/util/Random;)V",
"activeWriter",
"getActiveWriter",
"()Z",
"setActiveWriter",
"(Z)V",
"buffer",
"Lokio/Buffer;",
"getBuffer",
"()Lokio/Buffer;",
"frameSink",
"Lokhttp3/internal/ws/WebSocketWriter$FrameSink;",
"maskCursor",
"Lokio/Buffer$UnsafeCursor;",
"maskKey",
"",
"getRandom",
"()Ljava/util/Random;",
"getSink",
"()Lokio/BufferedSink;",
"sinkBuffer",
"writerClosed",
"newMessageSink",
"Lokio/Sink;",
"formatOpcode",
"",
"contentLength",
"",
"writeClose",
"",
"code",
"reason",
"Lokio/ByteString;",
"writeControlFrame",
"opcode",
"payload",
"writeMessageFrame",
"byteCount",
"isFirstFrame",
"isFinal",
"writePing",
"writePong",
"FrameSink",
"okhttp"
}
k = 0x1
mv = {
0x1,
0x1,
0x10
}
.end annotation
# instance fields
.field private activeWriter:Z
.field private final buffer:Lokio/Buffer;
.field private final frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
.field private final isClient:Z
.field private final maskCursor:Lokio/Buffer$UnsafeCursor;
.field private final maskKey:[B
.field private final random:Ljava/util/Random;
.field private final sink:Lokio/BufferedSink;
.field private final sinkBuffer:Lokio/Buffer;
.field private writerClosed:Z
# direct methods
.method public constructor <init>(ZLokio/BufferedSink;Ljava/util/Random;)V
.registers 5
const-string v0, "sink"
invoke-static {p2, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const-string v0, "random"
invoke-static {p3, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
.line 45
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-boolean p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->isClient:Z
iput-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->sink:Lokio/BufferedSink;
iput-object p3, p0, Lokhttp3/internal/ws/WebSocketWriter;->random:Ljava/util/Random;
.line 52
invoke-interface {p2}, Lokio/BufferedSink;->getBuffer()Lokio/Buffer;
move-result-object p1
iput-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
.line 55
new-instance p1, Lokio/Buffer;
invoke-direct {p1}, Lokio/Buffer;-><init>()V
iput-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->buffer:Lokio/Buffer;
.line 56
new-instance p1, Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
invoke-direct {p1, p0}, Lokhttp3/internal/ws/WebSocketWriter$FrameSink;-><init>(Lokhttp3/internal/ws/WebSocketWriter;)V
iput-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
.line 61
iget-boolean p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->isClient:Z
const/4 p2, 0x0
if-eqz p1, :cond_30
const/4 p1, 0x4
new-array p1, p1, [B
goto :goto_31
:cond_30
move-object p1, p2
:goto_31
iput-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B
.line 62
iget-boolean p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->isClient:Z
if-eqz p1, :cond_3c
new-instance p2, Lokio/Buffer$UnsafeCursor;
invoke-direct {p2}, Lokio/Buffer$UnsafeCursor;-><init>()V
:cond_3c
iput-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
return-void
.end method
.method private final writeControlFrame(ILokio/ByteString;)V
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 108
iget-boolean v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->writerClosed:Z
if-nez v0, :cond_84
.line 110
invoke-virtual {p2}, Lokio/ByteString;->size()I
move-result v0
int-to-long v1, v0
const-wide/16 v3, 0x7d
cmp-long v5, v1, v3
if-gtz v5, :cond_11
const/4 v1, 0x1
goto :goto_12
:cond_11
const/4 v1, 0x0
:goto_12
if-eqz v1, :cond_76
or-int/lit16 p1, p1, 0x80
.line 116
iget-object v1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {v1, p1}, Lokio/Buffer;->writeByte(I)Lokio/Buffer;
.line 119
iget-boolean p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->isClient:Z
if-eqz p1, :cond_66
or-int/lit16 p1, v0, 0x80
.line 121
iget-object v1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {v1, p1}, Lokio/Buffer;->writeByte(I)Lokio/Buffer;
.line 123
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->random:Ljava/util/Random;
iget-object v1, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B
if-nez v1, :cond_2f
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_2f
invoke-virtual {p1, v1}, Ljava/util/Random;->nextBytes([B)V
.line 124
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
iget-object v1, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B
invoke-virtual {p1, v1}, Lokio/Buffer;->write([B)Lokio/Buffer;
if-lez v0, :cond_70
.line 127
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p1}, Lokio/Buffer;->size()J
move-result-wide v0
.line 128
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p1, p2}, Lokio/Buffer;->write(Lokio/ByteString;)Lokio/Buffer;
.line 130
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
iget-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
if-nez p2, :cond_4f
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_4f
invoke-virtual {p1, p2}, Lokio/Buffer;->readAndWriteUnsafe(Lokio/Buffer$UnsafeCursor;)Lokio/Buffer$UnsafeCursor;
.line 131
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
invoke-virtual {p1, v0, v1}, Lokio/Buffer$UnsafeCursor;->seek(J)I
.line 132
sget-object p1, Lokhttp3/internal/ws/WebSocketProtocol;->INSTANCE:Lokhttp3/internal/ws/WebSocketProtocol;
iget-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
iget-object v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B
invoke-virtual {p1, p2, v0}, Lokhttp3/internal/ws/WebSocketProtocol;->toggleMask(Lokio/Buffer$UnsafeCursor;[B)V
.line 133
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
invoke-virtual {p1}, Lokio/Buffer$UnsafeCursor;->close()V
goto :goto_70
.line 136
:cond_66
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p1, v0}, Lokio/Buffer;->writeByte(I)Lokio/Buffer;
.line 137
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p1, p2}, Lokio/Buffer;->write(Lokio/ByteString;)Lokio/Buffer;
.line 140
:cond_70
:goto_70
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sink:Lokio/BufferedSink;
invoke-interface {p1}, Lokio/BufferedSink;->flush()V
return-void
.line 111
:cond_76
new-instance p1, Ljava/lang/IllegalArgumentException;
const-string p2, "Payload size must be less than or equal to 125"
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
check-cast p1, Ljava/lang/Throwable;
throw p1
.line 108
:cond_84
new-instance p1, Ljava/io/IOException;
const-string p2, "closed"
invoke-direct {p1, p2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
check-cast p1, Ljava/lang/Throwable;
throw p1
.end method
# virtual methods
.method public final getActiveWriter()Z
.registers 2
.line 58
iget-boolean v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->activeWriter:Z
return v0
.end method
.method public final getBuffer()Lokio/Buffer;
.registers 2
.line 55
iget-object v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->buffer:Lokio/Buffer;
return-object v0
.end method
.method public final getRandom()Ljava/util/Random;
.registers 2
.line 48
iget-object v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->random:Ljava/util/Random;
return-object v0
.end method
.method public final getSink()Lokio/BufferedSink;
.registers 2
.line 47
iget-object v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->sink:Lokio/BufferedSink;
return-object v0
.end method
.method public final newMessageSink(IJ)Lokio/Sink;
.registers 6
.line 148
iget-boolean v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->activeWriter:Z
const/4 v1, 0x1
xor-int/2addr v0, v1
if-eqz v0, :cond_22
.line 149
iput-boolean v1, p0, Lokhttp3/internal/ws/WebSocketWriter;->activeWriter:Z
.line 152
iget-object v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
invoke-virtual {v0, p1}, Lokhttp3/internal/ws/WebSocketWriter$FrameSink;->setFormatOpcode(I)V
.line 153
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
invoke-virtual {p1, p2, p3}, Lokhttp3/internal/ws/WebSocketWriter$FrameSink;->setContentLength(J)V
.line 154
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
invoke-virtual {p1, v1}, Lokhttp3/internal/ws/WebSocketWriter$FrameSink;->setFirstFrame(Z)V
.line 155
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
const/4 p2, 0x0
invoke-virtual {p1, p2}, Lokhttp3/internal/ws/WebSocketWriter$FrameSink;->setClosed(Z)V
.line 157
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink;
check-cast p1, Lokio/Sink;
return-object p1
.line 148
:cond_22
new-instance p1, Ljava/lang/IllegalStateException;
const-string p2, "Another message writer is active. Did you call close()?"
invoke-virtual {p2}, Ljava/lang/Object;->toString()Ljava/lang/String;
move-result-object p2
invoke-direct {p1, p2}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
check-cast p1, Ljava/lang/Throwable;
throw p1
.end method
.method public final setActiveWriter(Z)V
.registers 2
.line 58
iput-boolean p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->activeWriter:Z
return-void
.end method
.method public final writeClose(ILokio/ByteString;)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 85
sget-object v0, Lokio/ByteString;->EMPTY:Lokio/ByteString;
if-nez p1, :cond_6
if-eqz p2, :cond_1e
:cond_6
if-eqz p1, :cond_d
.line 88
sget-object v0, Lokhttp3/internal/ws/WebSocketProtocol;->INSTANCE:Lokhttp3/internal/ws/WebSocketProtocol;
invoke-virtual {v0, p1}, Lokhttp3/internal/ws/WebSocketProtocol;->validateCloseCode(I)V
.line 90
:cond_d
new-instance v0, Lokio/Buffer;
invoke-direct {v0}, Lokio/Buffer;-><init>()V
.line 91
invoke-virtual {v0, p1}, Lokio/Buffer;->writeShort(I)Lokio/Buffer;
if-eqz p2, :cond_1a
.line 93
invoke-virtual {v0, p2}, Lokio/Buffer;->write(Lokio/ByteString;)Lokio/Buffer;
.line 95
:cond_1a
invoke-virtual {v0}, Lokio/Buffer;->readByteString()Lokio/ByteString;
move-result-object v0
:cond_1e
const/16 p1, 0x8
const/4 p2, 0x1
.line 100
:try_start_21
invoke-direct {p0, p1, v0}, Lokhttp3/internal/ws/WebSocketWriter;->writeControlFrame(ILokio/ByteString;)V
:try_end_24
.catchall {:try_start_21 .. :try_end_24} :catchall_27
.line 102
iput-boolean p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->writerClosed:Z
return-void
:catchall_27
move-exception p1
iput-boolean p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->writerClosed:Z
throw p1
.end method
.method public final writeMessageFrame(IJZZ)V
.registers 7
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 167
iget-boolean v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->writerClosed:Z
if-nez v0, :cond_9e
const/4 v0, 0x0
if-eqz p4, :cond_8
goto :goto_9
:cond_8
const/4 p1, 0x0
:goto_9
if-eqz p5, :cond_d
or-int/lit16 p1, p1, 0x80
.line 173
:cond_d
iget-object p4, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p4, p1}, Lokio/Buffer;->writeByte(I)Lokio/Buffer;
.line 176
iget-boolean p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->isClient:Z
if-eqz p1, :cond_18
const/16 v0, 0x80
:cond_18
const-wide/16 p4, 0x7d
cmp-long p1, p2, p4
if-gtz p1, :cond_26
long-to-int p1, p2
or-int/2addr p1, v0
.line 182
iget-object p4, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p4, p1}, Lokio/Buffer;->writeByte(I)Lokio/Buffer;
goto :goto_47
:cond_26
const-wide/32 p4, 0xffff
cmp-long p1, p2, p4
if-gtz p1, :cond_3b
or-int/lit8 p1, v0, 0x7e
.line 186
iget-object p4, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p4, p1}, Lokio/Buffer;->writeByte(I)Lokio/Buffer;
.line 187
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
long-to-int p4, p2
invoke-virtual {p1, p4}, Lokio/Buffer;->writeShort(I)Lokio/Buffer;
goto :goto_47
:cond_3b
or-int/lit8 p1, v0, 0x7f
.line 191
iget-object p4, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p4, p1}, Lokio/Buffer;->writeByte(I)Lokio/Buffer;
.line 192
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p1, p2, p3}, Lokio/Buffer;->writeLong(J)Lokio/Buffer;
.line 196
:goto_47
iget-boolean p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->isClient:Z
if-eqz p1, :cond_91
.line 197
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->random:Ljava/util/Random;
iget-object p4, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B
if-nez p4, :cond_54
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_54
invoke-virtual {p1, p4}, Ljava/util/Random;->nextBytes([B)V
.line 198
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
iget-object p4, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B
invoke-virtual {p1, p4}, Lokio/Buffer;->write([B)Lokio/Buffer;
const-wide/16 p4, 0x0
cmp-long p1, p2, p4
if-lez p1, :cond_98
.line 201
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
invoke-virtual {p1}, Lokio/Buffer;->size()J
move-result-wide p4
.line 202
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
iget-object v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->buffer:Lokio/Buffer;
invoke-virtual {p1, v0, p2, p3}, Lokio/Buffer;->write(Lokio/Buffer;J)V
.line 204
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
iget-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
if-nez p2, :cond_7a
invoke-static {}, Lkotlin/jvm/internal/Intrinsics;->throwNpe()V
:cond_7a
invoke-virtual {p1, p2}, Lokio/Buffer;->readAndWriteUnsafe(Lokio/Buffer$UnsafeCursor;)Lokio/Buffer$UnsafeCursor;
.line 205
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
invoke-virtual {p1, p4, p5}, Lokio/Buffer$UnsafeCursor;->seek(J)I
.line 206
sget-object p1, Lokhttp3/internal/ws/WebSocketProtocol;->INSTANCE:Lokhttp3/internal/ws/WebSocketProtocol;
iget-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
iget-object p3, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B
invoke-virtual {p1, p2, p3}, Lokhttp3/internal/ws/WebSocketProtocol;->toggleMask(Lokio/Buffer$UnsafeCursor;[B)V
.line 207
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor;
invoke-virtual {p1}, Lokio/Buffer$UnsafeCursor;->close()V
goto :goto_98
.line 210
:cond_91
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer;
iget-object p4, p0, Lokhttp3/internal/ws/WebSocketWriter;->buffer:Lokio/Buffer;
invoke-virtual {p1, p4, p2, p3}, Lokio/Buffer;->write(Lokio/Buffer;J)V
.line 213
:cond_98
:goto_98
iget-object p1, p0, Lokhttp3/internal/ws/WebSocketWriter;->sink:Lokio/BufferedSink;
invoke-interface {p1}, Lokio/BufferedSink;->emit()Lokio/BufferedSink;
return-void
.line 167
:cond_9e
new-instance p1, Ljava/io/IOException;
const-string p2, "closed"
invoke-direct {p1, p2}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
check-cast p1, Ljava/lang/Throwable;
throw p1
.end method
.method public final writePing(Lokio/ByteString;)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
const-string v0, "payload"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const/16 v0, 0x9
.line 67
invoke-direct {p0, v0, p1}, Lokhttp3/internal/ws/WebSocketWriter;->writeControlFrame(ILokio/ByteString;)V
return-void
.end method
.method public final writePong(Lokio/ByteString;)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
const-string v0, "payload"
invoke-static {p1, v0}, Lkotlin/jvm/internal/Intrinsics;->checkParameterIsNotNull(Ljava/lang/Object;Ljava/lang/String;)V
const/16 v0, 0xa
.line 73
invoke-direct {p0, v0, p1}, Lokhttp3/internal/ws/WebSocketWriter;->writeControlFrame(ILokio/ByteString;)V
return-void
.end method