OkHttpClientTransport$ClientFrameHandler.smali
.class Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;
.super Ljava/lang/Object;
.source "OkHttpClientTransport.java"
# interfaces
.implements Lio/grpc/okhttp/internal/framed/FrameReader$Handler;
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/grpc/okhttp/OkHttpClientTransport;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x0
name = "ClientFrameHandler"
.end annotation
# instance fields
.field firstSettings:Z
.field frameReader:Lio/grpc/okhttp/internal/framed/FrameReader;
.field final synthetic this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# direct methods
.method constructor <init>(Lio/grpc/okhttp/OkHttpClientTransport;Lio/grpc/okhttp/internal/framed/FrameReader;)V
.registers 3
.line 1
iput-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 p1, 0x1
.line 2
iput-boolean p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->firstSettings:Z
.line 3
iput-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->frameReader:Lio/grpc/okhttp/internal/framed/FrameReader;
return-void
.end method
# virtual methods
.method public ackSettings()V
.registers 1
return-void
.end method
.method public alternateService(ILjava/lang/String;Lokio/ByteString;Ljava/lang/String;IJ)V
.registers 8
return-void
.end method
.method public data(ZILokio/BufferedSource;I)V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {v0, p2}, Lio/grpc/okhttp/OkHttpClientTransport;->getStream(I)Lio/grpc/okhttp/OkHttpClientStream;
move-result-object v0
if-nez v0, :cond_39
.line 2
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {p1, p2}, Lio/grpc/okhttp/OkHttpClientTransport;->mayHaveCreatedStream(I)Z
move-result p1
if-eqz p1, :cond_20
.line 3
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$900(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/AsyncFrameWriter;
move-result-object p1
sget-object v0, Lio/grpc/okhttp/internal/framed/ErrorCode;->INVALID_STREAM:Lio/grpc/okhttp/internal/framed/ErrorCode;
invoke-virtual {p1, p2, v0}, Lio/grpc/okhttp/AsyncFrameWriter;->rstStream(ILio/grpc/okhttp/internal/framed/ErrorCode;)V
int-to-long p1, p4
.line 4
invoke-interface {p3, p1, p2}, Lokio/BufferedSource;->skip(J)V
goto :goto_54
.line 5
:cond_20
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
sget-object p3, Lio/grpc/okhttp/internal/framed/ErrorCode;->PROTOCOL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
new-instance p4, Ljava/lang/StringBuilder;
invoke-direct {p4}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "Received data for unknown stream: "
invoke-virtual {p4, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p4, p2}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p2
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->onError(Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
invoke-static {p1, p3, p2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1700(Lio/grpc/okhttp/OkHttpClientTransport;Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
return-void
:cond_39
int-to-long v1, p4
.line 6
invoke-interface {p3, v1, v2}, Lokio/BufferedSource;->require(J)V
.line 7
new-instance p2, Lokio/Buffer;
invoke-direct {p2}, Lokio/Buffer;-><init>()V
.line 8
invoke-interface {p3}, Lokio/BufferedSource;->buffer()Lokio/Buffer;
move-result-object p3
invoke-virtual {p2, p3, v1, v2}, Lokio/Buffer;->write(Lokio/Buffer;J)V
.line 9
iget-object p3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->lock:Ljava/lang/Object;
invoke-static {p3}, Lio/grpc/okhttp/OkHttpClientTransport;->access$400(Lio/grpc/okhttp/OkHttpClientTransport;)Ljava/lang/Object;
move-result-object p3
monitor-enter p3
.line 10
:try_start_50
invoke-virtual {v0, p2, p1}, Lio/grpc/okhttp/OkHttpClientStream;->transportDataReceived(Lokio/Buffer;Z)V
.line 11
monitor-exit p3
:try_end_54
.catchall {:try_start_50 .. :try_end_54} :catchall_7f
.line 12
:goto_54
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->connectionUnacknowledgedBytesRead:I
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1800(Lio/grpc/okhttp/OkHttpClientTransport;)I
move-result p2
add-int/2addr p2, p4
# setter for: Lio/grpc/okhttp/OkHttpClientTransport;->connectionUnacknowledgedBytesRead:I
invoke-static {p1, p2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1802(Lio/grpc/okhttp/OkHttpClientTransport;I)I
.line 13
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->connectionUnacknowledgedBytesRead:I
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1800(Lio/grpc/okhttp/OkHttpClientTransport;)I
move-result p1
const/16 p2, 0x7fff
if-lt p1, p2, :cond_7e
.line 14
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$900(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/AsyncFrameWriter;
move-result-object p1
iget-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->connectionUnacknowledgedBytesRead:I
invoke-static {p2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1800(Lio/grpc/okhttp/OkHttpClientTransport;)I
move-result p2
int-to-long p2, p2
const/4 p4, 0x0
invoke-virtual {p1, p4, p2, p3}, Lio/grpc/okhttp/AsyncFrameWriter;->windowUpdate(IJ)V
.line 15
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# setter for: Lio/grpc/okhttp/OkHttpClientTransport;->connectionUnacknowledgedBytesRead:I
invoke-static {p1, p4}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1802(Lio/grpc/okhttp/OkHttpClientTransport;I)I
:cond_7e
return-void
:catchall_7f
move-exception p1
.line 16
:try_start_80
monitor-exit p3
:try_end_81
.catchall {:try_start_80 .. :try_end_81} :catchall_7f
throw p1
.end method
.method public goAway(ILio/grpc/okhttp/internal/framed/ErrorCode;Lokio/ByteString;)V
.registers 6
.line 1
iget p2, p2, Lio/grpc/okhttp/internal/framed/ErrorCode;->httpCode:I
int-to-long v0, p2
invoke-static {v0, v1}, Lio/grpc/internal/GrpcUtil$Http2Error;->statusForCode(J)Lio/grpc/Status;
move-result-object p2
const-string v0, "Received Goaway"
.line 2
invoke-virtual {p2, v0}, Lio/grpc/Status;->augmentDescription(Ljava/lang/String;)Lio/grpc/Status;
move-result-object p2
if-eqz p3, :cond_1d
.line 3
invoke-virtual {p3}, Lokio/ByteString;->size()I
move-result v0
if-lez v0, :cond_1d
.line 4
invoke-virtual {p3}, Lokio/ByteString;->utf8()Ljava/lang/String;
move-result-object p3
invoke-virtual {p2, p3}, Lio/grpc/Status;->augmentDescription(Ljava/lang/String;)Lio/grpc/Status;
move-result-object p2
.line 5
:cond_1d
iget-object p3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
const/4 v0, 0x0
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->startGoAway(ILio/grpc/okhttp/internal/framed/ErrorCode;Lio/grpc/Status;)V
invoke-static {p3, p1, v0, p2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1400(Lio/grpc/okhttp/OkHttpClientTransport;ILio/grpc/okhttp/internal/framed/ErrorCode;Lio/grpc/Status;)V
return-void
.end method
.method public headers(ZZIILjava/util/List;Lio/grpc/okhttp/internal/framed/HeadersMode;)V
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(ZZII",
"Ljava/util/List<",
"Lio/grpc/okhttp/internal/framed/Header;",
">;",
"Lio/grpc/okhttp/internal/framed/HeadersMode;",
")V"
}
.end annotation
.line 1
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->lock:Ljava/lang/Object;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$400(Lio/grpc/okhttp/OkHttpClientTransport;)Ljava/lang/Object;
move-result-object p1
monitor-enter p1
.line 2
:try_start_7
iget-object p4, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->streams:Ljava/util/Map;
invoke-static {p4}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1900(Lio/grpc/okhttp/OkHttpClientTransport;)Ljava/util/Map;
move-result-object p4
invoke-static {p3}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p6
invoke-interface {p4, p6}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p4
check-cast p4, Lio/grpc/okhttp/OkHttpClientStream;
if-nez p4, :cond_2f
.line 3
iget-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {p2, p3}, Lio/grpc/okhttp/OkHttpClientTransport;->mayHaveCreatedStream(I)Z
move-result p2
if-eqz p2, :cond_2d
.line 4
iget-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-static {p2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$900(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/AsyncFrameWriter;
move-result-object p2
sget-object p4, Lio/grpc/okhttp/internal/framed/ErrorCode;->INVALID_STREAM:Lio/grpc/okhttp/internal/framed/ErrorCode;
invoke-virtual {p2, p3, p4}, Lio/grpc/okhttp/AsyncFrameWriter;->rstStream(ILio/grpc/okhttp/internal/framed/ErrorCode;)V
goto :goto_32
:cond_2d
const/4 p2, 0x1
goto :goto_33
.line 5
:cond_2f
invoke-virtual {p4, p5, p2}, Lio/grpc/okhttp/OkHttpClientStream;->transportHeadersReceived(Ljava/util/List;Z)V
:goto_32
const/4 p2, 0x0
.line 6
:goto_33
monitor-exit p1
:try_end_34
.catchall {:try_start_7 .. :try_end_34} :catchall_4f
if-eqz p2, :cond_4e
.line 7
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
sget-object p2, Lio/grpc/okhttp/internal/framed/ErrorCode;->PROTOCOL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
new-instance p4, Ljava/lang/StringBuilder;
invoke-direct {p4}, Ljava/lang/StringBuilder;-><init>()V
const-string p5, "Received header for unknown stream: "
invoke-virtual {p4, p5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p4, p3}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p3
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->onError(Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
invoke-static {p1, p2, p3}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1700(Lio/grpc/okhttp/OkHttpClientTransport;Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
:cond_4e
return-void
:catchall_4f
move-exception p2
.line 8
:try_start_50
monitor-exit p1
:try_end_51
.catchall {:try_start_50 .. :try_end_51} :catchall_4f
throw p2
.end method
.method public ping(ZII)V
.registers 13
const/4 v0, 0x1
if-nez p1, :cond_d
.line 1
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$900(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/AsyncFrameWriter;
move-result-object p1
invoke-virtual {p1, v0, p2, p3}, Lio/grpc/okhttp/AsyncFrameWriter;->ping(ZII)V
goto :goto_7d
:cond_d
int-to-long p1, p2
const/16 v1, 0x20
shl-long/2addr p1, v1
int-to-long v1, p3
const-wide v3, 0xffffffffL
and-long/2addr v1, v3
or-long/2addr p1, v1
.line 2
iget-object p3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->lock:Ljava/lang/Object;
invoke-static {p3}, Lio/grpc/okhttp/OkHttpClientTransport;->access$400(Lio/grpc/okhttp/OkHttpClientTransport;)Ljava/lang/Object;
move-result-object p3
monitor-enter p3
.line 3
:try_start_20
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->ping:Lio/grpc/internal/Http2Ping;
invoke-static {v1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2100(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/Http2Ping;
move-result-object v1
const/4 v2, 0x0
if-eqz v1, :cond_6d
.line 4
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->ping:Lio/grpc/internal/Http2Ping;
invoke-static {v1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2100(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/Http2Ping;
move-result-object v1
invoke-virtual {v1}, Lio/grpc/internal/Http2Ping;->payload()J
move-result-wide v3
cmp-long v1, v3, p1
if-nez v1, :cond_43
.line 5
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->ping:Lio/grpc/internal/Http2Ping;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2100(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/Http2Ping;
move-result-object p1
.line 6
iget-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# setter for: Lio/grpc/okhttp/OkHttpClientTransport;->ping:Lio/grpc/internal/Http2Ping;
invoke-static {p2, v2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2102(Lio/grpc/okhttp/OkHttpClientTransport;Lio/grpc/internal/Http2Ping;)Lio/grpc/internal/Http2Ping;
goto :goto_77
.line 7
:cond_43
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->log:Ljava/util/logging/Logger;
invoke-static {}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1500()Ljava/util/logging/Logger;
move-result-object v1
sget-object v3, Ljava/util/logging/Level;->WARNING:Ljava/util/logging/Level;
const-string v4, "Received unexpected ping ack. Expecting %d, got %d"
const/4 v5, 0x2
new-array v5, v5, [Ljava/lang/Object;
const/4 v6, 0x0
iget-object v7, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
.line 8
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->ping:Lio/grpc/internal/Http2Ping;
invoke-static {v7}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2100(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/Http2Ping;
move-result-object v7
invoke-virtual {v7}, Lio/grpc/internal/Http2Ping;->payload()J
move-result-wide v7
invoke-static {v7, v8}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v7
aput-object v7, v5, v6
invoke-static {p1, p2}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object p1
aput-object p1, v5, v0
.line 9
invoke-static {v4, v5}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
invoke-virtual {v1, v3, p1}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V
goto :goto_76
.line 10
:cond_6d
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->log:Ljava/util/logging/Logger;
invoke-static {}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1500()Ljava/util/logging/Logger;
move-result-object p1
const-string p2, "Received unexpected ping ack. No ping outstanding"
invoke-virtual {p1, p2}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
:goto_76
move-object p1, v2
.line 11
:goto_77
monitor-exit p3
:try_end_78
.catchall {:try_start_20 .. :try_end_78} :catchall_7e
if-eqz p1, :cond_7d
.line 12
invoke-virtual {p1}, Lio/grpc/internal/Http2Ping;->complete()Z
:cond_7d
:goto_7d
return-void
:catchall_7e
move-exception p1
.line 13
:try_start_7f
monitor-exit p3
:try_end_80
.catchall {:try_start_7f .. :try_end_80} :catchall_7e
throw p1
.end method
.method public priority(IIIZ)V
.registers 5
return-void
.end method
.method public pushPromise(IILjava/util/List;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(II",
"Ljava/util/List<",
"Lio/grpc/okhttp/internal/framed/Header;",
">;)V"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 1
iget-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-static {p2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$900(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/AsyncFrameWriter;
move-result-object p2
sget-object p3, Lio/grpc/okhttp/internal/framed/ErrorCode;->PROTOCOL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
invoke-virtual {p2, p1, p3}, Lio/grpc/okhttp/AsyncFrameWriter;->rstStream(ILio/grpc/okhttp/internal/framed/ErrorCode;)V
return-void
.end method
.method public rstStream(ILio/grpc/okhttp/internal/framed/ErrorCode;)V
.registers 5
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-static {p2}, Lio/grpc/okhttp/OkHttpClientTransport;->toGrpcStatus(Lio/grpc/okhttp/internal/framed/ErrorCode;)Lio/grpc/Status;
move-result-object p2
const-string v1, "Rst Stream"
invoke-virtual {p2, v1}, Lio/grpc/Status;->augmentDescription(Ljava/lang/String;)Lio/grpc/Status;
move-result-object p2
const/4 v1, 0x0
invoke-virtual {v0, p1, p2, v1}, Lio/grpc/okhttp/OkHttpClientTransport;->finishStream(ILio/grpc/Status;Lio/grpc/okhttp/internal/framed/ErrorCode;)V
return-void
.end method
.method public run()V
.registers 8
const-string v0, "Exception closing frame reader"
.line 1
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v1
.line 2
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v2
const-string v3, "OkHttpClientTransport"
invoke-virtual {v2, v3}, Ljava/lang/Thread;->setName(Ljava/lang/String;)V
:cond_13
:goto_13
const/4 v2, 0x0
.line 3
:try_start_14
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->frameReader:Lio/grpc/okhttp/internal/framed/FrameReader;
invoke-interface {v3, p0}, Lio/grpc/okhttp/internal/framed/FrameReader;->nextFrame(Lio/grpc/okhttp/internal/framed/FrameReader$Handler;)Z
move-result v3
if-eqz v3, :cond_2e
.line 4
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->keepAliveManager:Lio/grpc/internal/KeepAliveManager;
invoke-static {v3}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1300(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/KeepAliveManager;
move-result-object v3
if-eqz v3, :cond_13
.line 5
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->keepAliveManager:Lio/grpc/internal/KeepAliveManager;
invoke-static {v3}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1300(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/KeepAliveManager;
move-result-object v3
invoke-virtual {v3}, Lio/grpc/internal/KeepAliveManager;->onDataReceived()V
goto :goto_13
.line 6
:cond_2e
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
sget-object v4, Lio/grpc/okhttp/internal/framed/ErrorCode;->INTERNAL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
sget-object v5, Lio/grpc/Status;->UNAVAILABLE:Lio/grpc/Status;
const-string v6, "End of stream or IOException"
.line 7
invoke-virtual {v5, v6}, Lio/grpc/Status;->withDescription(Ljava/lang/String;)Lio/grpc/Status;
move-result-object v5
.line 8
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->startGoAway(ILio/grpc/okhttp/internal/framed/ErrorCode;Lio/grpc/Status;)V
invoke-static {v3, v2, v4, v5}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1400(Lio/grpc/okhttp/OkHttpClientTransport;ILio/grpc/okhttp/internal/framed/ErrorCode;Lio/grpc/Status;)V
:try_end_3d
.catch Ljava/lang/Exception; {:try_start_14 .. :try_end_3d} :catch_47
.catchall {:try_start_14 .. :try_end_3d} :catchall_45
.line 9
:try_start_3d
iget-object v2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->frameReader:Lio/grpc/okhttp/internal/framed/FrameReader;
invoke-interface {v2}, Ljava/io/Closeable;->close()V
:try_end_42
.catch Ljava/io/IOException; {:try_start_3d .. :try_end_42} :catch_43
goto :goto_65
:catch_43
move-exception v2
goto :goto_5c
:catchall_45
move-exception v2
goto :goto_76
:catch_47
move-exception v3
.line 10
:try_start_48
iget-object v4, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
sget-object v5, Lio/grpc/okhttp/internal/framed/ErrorCode;->PROTOCOL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
sget-object v6, Lio/grpc/Status;->UNAVAILABLE:Lio/grpc/Status;
invoke-virtual {v6, v3}, Lio/grpc/Status;->withCause(Ljava/lang/Throwable;)Lio/grpc/Status;
move-result-object v3
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->startGoAway(ILio/grpc/okhttp/internal/framed/ErrorCode;Lio/grpc/Status;)V
invoke-static {v4, v2, v5, v3}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1400(Lio/grpc/okhttp/OkHttpClientTransport;ILio/grpc/okhttp/internal/framed/ErrorCode;Lio/grpc/Status;)V
:try_end_55
.catchall {:try_start_48 .. :try_end_55} :catchall_45
.line 11
:try_start_55
iget-object v2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->frameReader:Lio/grpc/okhttp/internal/framed/FrameReader;
invoke-interface {v2}, Ljava/io/Closeable;->close()V
:try_end_5a
.catch Ljava/io/IOException; {:try_start_55 .. :try_end_5a} :catch_5b
goto :goto_65
:catch_5b
move-exception v2
.line 12
:goto_5c
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->log:Ljava/util/logging/Logger;
invoke-static {}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1500()Ljava/util/logging/Logger;
move-result-object v3
sget-object v4, Ljava/util/logging/Level;->INFO:Ljava/util/logging/Level;
invoke-virtual {v3, v4, v0, v2}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 13
:goto_65
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->listener:Lio/grpc/internal/ManagedClientTransport$Listener;
invoke-static {v0}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1600(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/ManagedClientTransport$Listener;
move-result-object v0
invoke-interface {v0}, Lio/grpc/internal/ManagedClientTransport$Listener;->transportTerminated()V
.line 14
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/lang/Thread;->setName(Ljava/lang/String;)V
return-void
.line 15
:goto_76
:try_start_76
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->frameReader:Lio/grpc/okhttp/internal/framed/FrameReader;
invoke-interface {v3}, Ljava/io/Closeable;->close()V
:try_end_7b
.catch Ljava/io/IOException; {:try_start_76 .. :try_end_7b} :catch_7c
goto :goto_86
:catch_7c
move-exception v3
.line 16
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->log:Ljava/util/logging/Logger;
invoke-static {}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1500()Ljava/util/logging/Logger;
move-result-object v4
sget-object v5, Ljava/util/logging/Level;->INFO:Ljava/util/logging/Level;
invoke-virtual {v4, v5, v0, v3}, Ljava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 17
:goto_86
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->listener:Lio/grpc/internal/ManagedClientTransport$Listener;
invoke-static {v0}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1600(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/ManagedClientTransport$Listener;
move-result-object v0
invoke-interface {v0}, Lio/grpc/internal/ManagedClientTransport$Listener;->transportTerminated()V
.line 18
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0, v1}, Ljava/lang/Thread;->setName(Ljava/lang/String;)V
goto :goto_98
:goto_97
throw v2
:goto_98
goto :goto_97
.end method
.method public settings(ZLio/grpc/okhttp/internal/framed/Settings;)V
.registers 5
.line 1
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->lock:Ljava/lang/Object;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$400(Lio/grpc/okhttp/OkHttpClientTransport;)Ljava/lang/Object;
move-result-object p1
monitor-enter p1
const/4 v0, 0x4
.line 2
:try_start_8
invoke-static {p2, v0}, Lio/grpc/okhttp/OkHttpSettingsUtil;->isSet(Lio/grpc/okhttp/internal/framed/Settings;I)Z
move-result v1
if-eqz v1, :cond_17
.line 3
invoke-static {p2, v0}, Lio/grpc/okhttp/OkHttpSettingsUtil;->get(Lio/grpc/okhttp/internal/framed/Settings;I)I
move-result v0
.line 4
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# setter for: Lio/grpc/okhttp/OkHttpClientTransport;->maxConcurrentStreams:I
invoke-static {v1, v0}, Lio/grpc/okhttp/OkHttpClientTransport;->access$502(Lio/grpc/okhttp/OkHttpClientTransport;I)I
:cond_17
const/4 v0, 0x7
.line 5
invoke-static {p2, v0}, Lio/grpc/okhttp/OkHttpSettingsUtil;->isSet(Lio/grpc/okhttp/internal/framed/Settings;I)Z
move-result v1
if-eqz v1, :cond_2b
.line 6
invoke-static {p2, v0}, Lio/grpc/okhttp/OkHttpSettingsUtil;->get(Lio/grpc/okhttp/internal/framed/Settings;I)I
move-result v0
.line 7
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
invoke-static {v1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2000(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/OutboundFlowController;
move-result-object v1
invoke-virtual {v1, v0}, Lio/grpc/okhttp/OutboundFlowController;->initialOutboundWindowSize(I)V
.line 8
:cond_2b
iget-boolean v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->firstSettings:Z
if-eqz v0, :cond_3b
.line 9
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->listener:Lio/grpc/internal/ManagedClientTransport$Listener;
invoke-static {v0}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1600(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/internal/ManagedClientTransport$Listener;
move-result-object v0
invoke-interface {v0}, Lio/grpc/internal/ManagedClientTransport$Listener;->transportReady()V
const/4 v0, 0x0
.line 10
iput-boolean v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->firstSettings:Z
.line 11
:cond_3b
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->startPendingStreams()Z
invoke-static {v0}, Lio/grpc/okhttp/OkHttpClientTransport;->access$600(Lio/grpc/okhttp/OkHttpClientTransport;)Z
.line 12
monitor-exit p1
:try_end_41
.catchall {:try_start_8 .. :try_end_41} :catchall_4b
.line 13
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$900(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/AsyncFrameWriter;
move-result-object p1
invoke-virtual {p1, p2}, Lio/grpc/okhttp/AsyncFrameWriter;->ackSettings(Lio/grpc/okhttp/internal/framed/Settings;)V
return-void
:catchall_4b
move-exception p2
.line 14
:try_start_4c
monitor-exit p1
:try_end_4d
.catchall {:try_start_4c .. :try_end_4d} :catchall_4b
throw p2
.end method
.method public windowUpdate(IJ)V
.registers 8
const-wide/16 v0, 0x0
cmp-long v2, p2, v0
if-nez v2, :cond_20
const-string p2, "Received 0 flow control window increment."
if-nez p1, :cond_12
.line 1
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
sget-object p3, Lio/grpc/okhttp/internal/framed/ErrorCode;->PROTOCOL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->onError(Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
invoke-static {p1, p3, p2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1700(Lio/grpc/okhttp/OkHttpClientTransport;Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
goto :goto_1f
.line 2
:cond_12
iget-object p3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
sget-object v0, Lio/grpc/Status;->INTERNAL:Lio/grpc/Status;
.line 3
invoke-virtual {v0, p2}, Lio/grpc/Status;->withDescription(Ljava/lang/String;)Lio/grpc/Status;
move-result-object p2
sget-object v0, Lio/grpc/okhttp/internal/framed/ErrorCode;->PROTOCOL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
.line 4
invoke-virtual {p3, p1, p2, v0}, Lio/grpc/okhttp/OkHttpClientTransport;->finishStream(ILio/grpc/Status;Lio/grpc/okhttp/internal/framed/ErrorCode;)V
:goto_1f
return-void
:cond_20
const/4 v0, 0x0
.line 5
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->lock:Ljava/lang/Object;
invoke-static {v1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$400(Lio/grpc/okhttp/OkHttpClientTransport;)Ljava/lang/Object;
move-result-object v1
monitor-enter v1
if-nez p1, :cond_37
.line 6
:try_start_2a
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
invoke-static {p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2000(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/OutboundFlowController;
move-result-object p1
const/4 v0, 0x0
long-to-int p3, p2
invoke-virtual {p1, v0, p3}, Lio/grpc/okhttp/OutboundFlowController;->windowUpdate(Lio/grpc/okhttp/OkHttpClientStream;I)V
.line 7
monitor-exit v1
return-void
.line 8
:cond_37
iget-object v2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->streams:Ljava/util/Map;
invoke-static {v2}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1900(Lio/grpc/okhttp/OkHttpClientTransport;)Ljava/util/Map;
move-result-object v2
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v3
invoke-interface {v2, v3}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v2
check-cast v2, Lio/grpc/okhttp/OkHttpClientStream;
if-eqz v2, :cond_54
.line 9
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
# getter for: Lio/grpc/okhttp/OkHttpClientTransport;->outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
invoke-static {v3}, Lio/grpc/okhttp/OkHttpClientTransport;->access$2000(Lio/grpc/okhttp/OkHttpClientTransport;)Lio/grpc/okhttp/OutboundFlowController;
move-result-object v3
long-to-int p3, p2
invoke-virtual {v3, v2, p3}, Lio/grpc/okhttp/OutboundFlowController;->windowUpdate(Lio/grpc/okhttp/OkHttpClientStream;I)V
goto :goto_5d
.line 10
:cond_54
iget-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {p2, p1}, Lio/grpc/okhttp/OkHttpClientTransport;->mayHaveCreatedStream(I)Z
move-result p2
if-nez p2, :cond_5d
const/4 v0, 0x1
.line 11
:cond_5d
:goto_5d
monitor-exit v1
:try_end_5e
.catchall {:try_start_2a .. :try_end_5e} :catchall_79
if-eqz v0, :cond_78
.line 12
iget-object p2, p0, Lio/grpc/okhttp/OkHttpClientTransport$ClientFrameHandler;->this$0:Lio/grpc/okhttp/OkHttpClientTransport;
sget-object p3, Lio/grpc/okhttp/internal/framed/ErrorCode;->PROTOCOL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Received window_update for unknown stream: "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
# invokes: Lio/grpc/okhttp/OkHttpClientTransport;->onError(Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
invoke-static {p2, p3, p1}, Lio/grpc/okhttp/OkHttpClientTransport;->access$1700(Lio/grpc/okhttp/OkHttpClientTransport;Lio/grpc/okhttp/internal/framed/ErrorCode;Ljava/lang/String;)V
:cond_78
return-void
:catchall_79
move-exception p1
.line 13
:try_start_7a
monitor-exit v1
:try_end_7b
.catchall {:try_start_7a .. :try_end_7b} :catchall_79
throw p1
.end method