.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 (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;->()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 p2 iput-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->sinkBuffer:Lokio/Buffer; .line 55 new-instance p2, Lokio/Buffer; invoke-direct {p2}, Lokio/Buffer;->()V iput-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->buffer:Lokio/Buffer; .line 56 new-instance p2, Lokhttp3/internal/ws/WebSocketWriter$FrameSink; invoke-direct {p2, p0}, Lokhttp3/internal/ws/WebSocketWriter$FrameSink;->(Lokhttp3/internal/ws/WebSocketWriter;)V iput-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink; const/4 p2, 0x0 if-eqz p1, :cond_2e const/4 p3, 0x4 .line 61 new-array p3, p3, [B goto :goto_2f :cond_2e move-object p3, p2 :goto_2f iput-object p3, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskKey:[B if-eqz p1, :cond_38 .line 62 new-instance p2, Lokio/Buffer$UnsafeCursor; invoke-direct {p2}, Lokio/Buffer$UnsafeCursor;->()V :cond_38 iput-object p2, p0, Lokhttp3/internal/ws/WebSocketWriter;->maskCursor:Lokio/Buffer$UnsafeCursor; return-void .end method .method private final writeControlFrame(ILokio/ByteString;)V .registers 8 .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 v1, v1, v3 if-gtz v1, :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;->(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;->(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 if-nez v0, :cond_21 const/4 v0, 0x1 .line 149 iput-boolean v0, p0, Lokhttp3/internal/ws/WebSocketWriter;->activeWriter:Z .line 152 iget-object v1, p0, Lokhttp3/internal/ws/WebSocketWriter;->frameSink:Lokhttp3/internal/ws/WebSocketWriter$FrameSink; invoke-virtual {v1, 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, v0}, 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_21 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;->(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;->()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 move p1, v0 :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;->(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