OkHttpClientStream.smali
.class Lio/grpc/okhttp/OkHttpClientStream;
.super Lio/grpc/internal/Http2ClientStream;
.source "OkHttpClientStream.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lio/grpc/okhttp/OkHttpClientStream$PendingData;
}
.end annotation
# static fields
.field private static final EMPTY_BUFFER:Lokio/Buffer;
.field private static final WINDOW_UPDATE_THRESHOLD:I = 0x7fff
# instance fields
.field private authority:Ljava/lang/String;
.field private cancelSent:Z
.field private final frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
.field private headers:Lio/grpc/Metadata;
.field private volatile id:Ljava/lang/Integer;
.field private final lock:Ljava/lang/Object;
.field private final method:Lio/grpc/MethodDescriptor;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/grpc/MethodDescriptor<",
"**>;"
}
.end annotation
.end field
.field private final outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
.field private outboundFlowState:Ljava/lang/Object;
.field private pendingData:Ljava/util/Queue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Queue<",
"Lio/grpc/okhttp/OkHttpClientStream$PendingData;",
">;"
}
.end annotation
.end field
.field private processedWindow:I
.field private requestHeaders:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lio/grpc/okhttp/internal/framed/Header;",
">;"
}
.end annotation
.end field
.field private final transport:Lio/grpc/okhttp/OkHttpClientTransport;
.field private final userAgent:Ljava/lang/String;
.field private window:I
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 1
new-instance v0, Lokio/Buffer;
invoke-direct {v0}, Lokio/Buffer;-><init>()V
sput-object v0, Lio/grpc/okhttp/OkHttpClientStream;->EMPTY_BUFFER:Lokio/Buffer;
return-void
.end method
.method constructor <init>(Lio/grpc/MethodDescriptor;Lio/grpc/Metadata;Lio/grpc/okhttp/AsyncFrameWriter;Lio/grpc/okhttp/OkHttpClientTransport;Lio/grpc/okhttp/OutboundFlowController;Ljava/lang/Object;ILjava/lang/String;Ljava/lang/String;)V
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/grpc/MethodDescriptor<",
"**>;",
"Lio/grpc/Metadata;",
"Lio/grpc/okhttp/AsyncFrameWriter;",
"Lio/grpc/okhttp/OkHttpClientTransport;",
"Lio/grpc/okhttp/OutboundFlowController;",
"Ljava/lang/Object;",
"I",
"Ljava/lang/String;",
"Ljava/lang/String;",
")V"
}
.end annotation
.line 1
new-instance v0, Lio/grpc/okhttp/OkHttpWritableBufferAllocator;
invoke-direct {v0}, Lio/grpc/okhttp/OkHttpWritableBufferAllocator;-><init>()V
invoke-direct {p0, v0, p7}, Lio/grpc/internal/Http2ClientStream;-><init>(Lio/grpc/internal/WritableBufferAllocator;I)V
const p7, 0xffff
.line 2
iput p7, p0, Lio/grpc/okhttp/OkHttpClientStream;->window:I
.line 3
iput p7, p0, Lio/grpc/okhttp/OkHttpClientStream;->processedWindow:I
.line 4
new-instance p7, Ljava/util/ArrayDeque;
invoke-direct {p7}, Ljava/util/ArrayDeque;-><init>()V
iput-object p7, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
const/4 p7, 0x0
.line 5
iput-boolean p7, p0, Lio/grpc/okhttp/OkHttpClientStream;->cancelSent:Z
.line 6
iput-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->method:Lio/grpc/MethodDescriptor;
.line 7
iput-object p2, p0, Lio/grpc/okhttp/OkHttpClientStream;->headers:Lio/grpc/Metadata;
.line 8
iput-object p3, p0, Lio/grpc/okhttp/OkHttpClientStream;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
.line 9
iput-object p4, p0, Lio/grpc/okhttp/OkHttpClientStream;->transport:Lio/grpc/okhttp/OkHttpClientTransport;
.line 10
iput-object p5, p0, Lio/grpc/okhttp/OkHttpClientStream;->outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
.line 11
iput-object p6, p0, Lio/grpc/okhttp/OkHttpClientStream;->lock:Ljava/lang/Object;
.line 12
iput-object p8, p0, Lio/grpc/okhttp/OkHttpClientStream;->authority:Ljava/lang/String;
.line 13
iput-object p9, p0, Lio/grpc/okhttp/OkHttpClientStream;->userAgent:Ljava/lang/String;
return-void
.end method
# virtual methods
.method public allocated()V
.registers 1
.line 1
invoke-virtual {p0}, Lio/grpc/internal/AbstractStream;->onStreamAllocated()V
return-void
.end method
.method getOutboundFlowState()Ljava/lang/Object;
.registers 2
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->outboundFlowState:Ljava/lang/Object;
return-object v0
.end method
.method public getType()Lio/grpc/MethodDescriptor$MethodType;
.registers 2
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->method:Lio/grpc/MethodDescriptor;
invoke-virtual {v0}, Lio/grpc/MethodDescriptor;->getType()Lio/grpc/MethodDescriptor$MethodType;
move-result-object v0
return-object v0
.end method
.method public id()Ljava/lang/Integer;
.registers 2
.line 2
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->id:Ljava/lang/Integer;
return-object v0
.end method
.method public bridge synthetic id()Ljava/lang/Object;
.registers 2
.line 1
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object v0
return-object v0
.end method
.method onStreamSentBytes(I)V
.registers 2
.line 1
invoke-virtual {p0, p1}, Lio/grpc/internal/AbstractStream;->onSentBytes(I)V
return-void
.end method
.method public remoteEndClosed()V
.registers 4
.line 1
invoke-super {p0}, Lio/grpc/internal/AbstractClientStream;->remoteEndClosed()V
.line 2
invoke-virtual {p0}, Lio/grpc/internal/AbstractStream;->canSend()Z
move-result v0
if-eqz v0, :cond_18
.line 3
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
sget-object v2, Lio/grpc/okhttp/internal/framed/ErrorCode;->CANCEL:Lio/grpc/okhttp/internal/framed/ErrorCode;
invoke-virtual {v0, v1, v2}, Lio/grpc/okhttp/AsyncFrameWriter;->rstStream(ILio/grpc/okhttp/internal/framed/ErrorCode;)V
.line 4
:cond_18
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->transport:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Integer;->intValue()I
move-result v1
const/4 v2, 0x0
invoke-virtual {v0, v1, v2, v2}, Lio/grpc/okhttp/OkHttpClientTransport;->finishStream(ILio/grpc/Status;Lio/grpc/okhttp/internal/framed/ErrorCode;)V
return-void
.end method
.method public request(I)V
.registers 3
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->lock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
invoke-virtual {p0, p1}, Lio/grpc/internal/AbstractStream;->requestMessagesFromDeframer(I)V
.line 3
monitor-exit v0
return-void
:catchall_8
move-exception p1
monitor-exit v0
:try_end_a
.catchall {:try_start_3 .. :try_end_a} :catchall_8
throw p1
.end method
.method protected returnProcessedBytes(I)V
.registers 7
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->lock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->processedWindow:I
sub-int/2addr v1, p1
iput v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->processedWindow:I
.line 3
iget p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->processedWindow:I
const/16 v1, 0x7fff
if-gt p1, v1, :cond_2c
const p1, 0xffff
.line 4
iget v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->processedWindow:I
sub-int/2addr p1, v1
.line 5
iget v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->window:I
add-int/2addr v1, p1
iput v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->window:I
.line 6
iget v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->processedWindow:I
add-int/2addr v1, p1
iput v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->processedWindow:I
.line 7
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
move-result v2
int-to-long v3, p1
invoke-virtual {v1, v2, v3, v4}, Lio/grpc/okhttp/AsyncFrameWriter;->windowUpdate(IJ)V
.line 8
:cond_2c
monitor-exit v0
return-void
:catchall_2e
move-exception p1
monitor-exit v0
:try_end_30
.catchall {:try_start_3 .. :try_end_30} :catchall_2e
throw p1
.end method
.method protected sendCancel(Lio/grpc/Status;)V
.registers 7
.line 1
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->lock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget-boolean v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->cancelSent:Z
if-eqz v1, :cond_9
.line 3
monitor-exit v0
return-void
:cond_9
const/4 v1, 0x1
.line 4
iput-boolean v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->cancelSent:Z
.line 5
iget-object v2, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
if-eqz v2, :cond_3b
.line 6
iget-object v2, p0, Lio/grpc/okhttp/OkHttpClientStream;->transport:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {v2, p0}, Lio/grpc/okhttp/OkHttpClientTransport;->removePendingStream(Lio/grpc/okhttp/OkHttpClientStream;)V
const/4 v2, 0x0
.line 7
iput-object v2, p0, Lio/grpc/okhttp/OkHttpClientStream;->requestHeaders:Ljava/util/List;
.line 8
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
invoke-interface {v3}, Ljava/util/Queue;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_1e
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_30
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lio/grpc/okhttp/OkHttpClientStream$PendingData;
.line 9
iget-object v4, v4, Lio/grpc/okhttp/OkHttpClientStream$PendingData;->buffer:Lokio/Buffer;
invoke-virtual {v4}, Lokio/Buffer;->clear()V
goto :goto_1e
.line 10
:cond_30
iput-object v2, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
.line 11
new-instance v2, Lio/grpc/Metadata;
invoke-direct {v2}, Lio/grpc/Metadata;-><init>()V
invoke-virtual {p0, p1, v1, v2}, Lio/grpc/internal/AbstractClientStream;->transportReportStatus(Lio/grpc/Status;ZLio/grpc/Metadata;)V
goto :goto_4a
.line 12
:cond_3b
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->transport:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
move-result v2
sget-object v3, Lio/grpc/okhttp/internal/framed/ErrorCode;->CANCEL:Lio/grpc/okhttp/internal/framed/ErrorCode;
invoke-virtual {v1, v2, p1, v3}, Lio/grpc/okhttp/OkHttpClientTransport;->finishStream(ILio/grpc/Status;Lio/grpc/okhttp/internal/framed/ErrorCode;)V
.line 13
:goto_4a
monitor-exit v0
return-void
:catchall_4c
move-exception p1
monitor-exit v0
:try_end_4e
.catchall {:try_start_3 .. :try_end_4e} :catchall_4c
goto :goto_50
:goto_4f
throw p1
:goto_50
goto :goto_4f
.end method
.method protected sendFrame(Lio/grpc/internal/WritableBuffer;ZZ)V
.registers 7
if-nez p1, :cond_5
.line 1
sget-object p1, Lio/grpc/okhttp/OkHttpClientStream;->EMPTY_BUFFER:Lokio/Buffer;
goto :goto_15
.line 2
:cond_5
check-cast p1, Lio/grpc/okhttp/OkHttpWritableBuffer;
invoke-virtual {p1}, Lio/grpc/okhttp/OkHttpWritableBuffer;->buffer()Lokio/Buffer;
move-result-object p1
.line 3
invoke-virtual {p1}, Lokio/Buffer;->size()J
move-result-wide v0
long-to-int v1, v0
if-lez v1, :cond_15
.line 4
invoke-virtual {p0, v1}, Lio/grpc/internal/AbstractStream;->onSendingBytes(I)V
.line 5
:cond_15
:goto_15
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->lock:Ljava/lang/Object;
monitor-enter v0
.line 6
:try_start_18
iget-boolean v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->cancelSent:Z
if-eqz v1, :cond_1e
.line 7
monitor-exit v0
return-void
.line 8
:cond_1e
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
if-eqz v1, :cond_2d
.line 9
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
new-instance v2, Lio/grpc/okhttp/OkHttpClientStream$PendingData;
invoke-direct {v2, p1, p2, p3}, Lio/grpc/okhttp/OkHttpClientStream$PendingData;-><init>(Lokio/Buffer;ZZ)V
invoke-interface {v1, v2}, Ljava/util/Queue;->add(Ljava/lang/Object;)Z
goto :goto_48
.line 10
:cond_2d
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object v1
if-eqz v1, :cond_35
const/4 v1, 0x1
goto :goto_36
:cond_35
const/4 v1, 0x0
:goto_36
const-string v2, "streamId should be set"
invoke-static {v1, v2}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 11
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object v2
invoke-virtual {v2}, Ljava/lang/Integer;->intValue()I
move-result v2
invoke-virtual {v1, p2, v2, p1, p3}, Lio/grpc/okhttp/OutboundFlowController;->data(ZILokio/Buffer;Z)V
.line 12
:goto_48
monitor-exit v0
return-void
:catchall_4a
move-exception p1
monitor-exit v0
:try_end_4c
.catchall {:try_start_18 .. :try_end_4c} :catchall_4a
throw p1
.end method
.method public setAuthority(Ljava/lang/String;)V
.registers 4
.line 1
invoke-virtual {p0}, Lio/grpc/internal/AbstractClientStream;->listener()Lio/grpc/internal/ClientStreamListener;
move-result-object v0
if-nez v0, :cond_8
const/4 v0, 0x1
goto :goto_9
:cond_8
const/4 v0, 0x0
:goto_9
const-string v1, "must be call before start"
invoke-static {v0, v1}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
const-string v0, "authority"
.line 2
invoke-static {p1, v0}, Lcom/google/common/base/r;->a(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
check-cast p1, Ljava/lang/String;
iput-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->authority:Ljava/lang/String;
return-void
.end method
.method setOutboundFlowState(Ljava/lang/Object;)V
.registers 2
.line 1
iput-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->outboundFlowState:Ljava/lang/Object;
return-void
.end method
.method public start(Lio/grpc/internal/ClientStreamListener;)V
.registers 5
.line 1
invoke-super {p0, p1}, Lio/grpc/internal/AbstractClientStream;->start(Lio/grpc/internal/ClientStreamListener;)V
.line 2
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const-string v0, "/"
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->method:Lio/grpc/MethodDescriptor;
invoke-virtual {v0}, Lio/grpc/MethodDescriptor;->getFullMethodName()Ljava/lang/String;
move-result-object v0
invoke-virtual {p1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 3
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->headers:Lio/grpc/Metadata;
sget-object v1, Lio/grpc/internal/GrpcUtil;->USER_AGENT_KEY:Lio/grpc/Metadata$Key;
invoke-virtual {v0, v1}, Lio/grpc/Metadata;->removeAll(Lio/grpc/Metadata$Key;)Ljava/lang/Iterable;
.line 4
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->headers:Lio/grpc/Metadata;
iget-object v1, p0, Lio/grpc/okhttp/OkHttpClientStream;->authority:Ljava/lang/String;
iget-object v2, p0, Lio/grpc/okhttp/OkHttpClientStream;->userAgent:Ljava/lang/String;
.line 5
invoke-static {v0, p1, v1, v2}, Lio/grpc/okhttp/Headers;->createRequestHeaders(Lio/grpc/Metadata;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
move-result-object p1
const/4 v0, 0x0
.line 6
iput-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->headers:Lio/grpc/Metadata;
.line 7
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->lock:Ljava/lang/Object;
monitor-enter v0
.line 8
:try_start_31
iput-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->requestHeaders:Ljava/util/List;
.line 9
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->transport:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {p1, p0}, Lio/grpc/okhttp/OkHttpClientTransport;->streamReadyToStart(Lio/grpc/okhttp/OkHttpClientStream;)V
.line 10
monitor-exit v0
return-void
:catchall_3a
move-exception p1
monitor-exit v0
:try_end_3c
.catchall {:try_start_31 .. :try_end_3c} :catchall_3a
throw p1
.end method
.method public start(Ljava/lang/Integer;)V
.registers 11
const-string v0, "id"
.line 11
invoke-static {p1, v0}, Lcom/google/common/base/r;->a(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 12
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->id:Ljava/lang/Integer;
const/4 v1, 0x1
const/4 v2, 0x0
if-nez v0, :cond_d
const/4 v0, 0x1
goto :goto_e
:cond_d
const/4 v0, 0x0
:goto_e
new-array v3, v1, [Ljava/lang/Object;
iget-object v4, p0, Lio/grpc/okhttp/OkHttpClientStream;->id:Ljava/lang/Integer;
aput-object v4, v3, v2
const-string v4, "the stream has been started with id %s"
invoke-static {v0, v4, v3}, Lcom/google/common/base/r;->b(ZLjava/lang/String;[Ljava/lang/Object;)V
.line 13
iput-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->id:Ljava/lang/Integer;
.line 14
iget-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
if-eqz v0, :cond_5d
.line 15
iget-object v3, p0, Lio/grpc/okhttp/OkHttpClientStream;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
const/4 v4, 0x0
const/4 v5, 0x0
invoke-virtual {p1}, Ljava/lang/Integer;->intValue()I
move-result v6
const/4 v7, 0x0
iget-object v8, p0, Lio/grpc/okhttp/OkHttpClientStream;->requestHeaders:Ljava/util/List;
invoke-virtual/range {v3 .. v8}, Lio/grpc/okhttp/AsyncFrameWriter;->synStream(ZZIILjava/util/List;)V
const/4 v0, 0x0
.line 16
iput-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->requestHeaders:Ljava/util/List;
const/4 v3, 0x0
.line 17
:cond_31
:goto_31
iget-object v4, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
invoke-interface {v4}, Ljava/util/Queue;->isEmpty()Z
move-result v4
if-nez v4, :cond_54
.line 18
iget-object v4, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
invoke-interface {v4}, Ljava/util/Queue;->poll()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lio/grpc/okhttp/OkHttpClientStream$PendingData;
.line 19
iget-object v5, p0, Lio/grpc/okhttp/OkHttpClientStream;->outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
iget-boolean v6, v4, Lio/grpc/okhttp/OkHttpClientStream$PendingData;->endOfStream:Z
invoke-virtual {p1}, Ljava/lang/Integer;->intValue()I
move-result v7
iget-object v8, v4, Lio/grpc/okhttp/OkHttpClientStream$PendingData;->buffer:Lokio/Buffer;
invoke-virtual {v5, v6, v7, v8, v2}, Lio/grpc/okhttp/OutboundFlowController;->data(ZILokio/Buffer;Z)V
.line 20
iget-boolean v4, v4, Lio/grpc/okhttp/OkHttpClientStream$PendingData;->flush:Z
if-eqz v4, :cond_31
const/4 v3, 0x1
goto :goto_31
:cond_54
if-eqz v3, :cond_5b
.line 21
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->outboundFlow:Lio/grpc/okhttp/OutboundFlowController;
invoke-virtual {p1}, Lio/grpc/okhttp/OutboundFlowController;->flush()V
.line 22
:cond_5b
iput-object v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->pendingData:Ljava/util/Queue;
:cond_5d
return-void
.end method
.method public transportDataReceived(Lokio/Buffer;Z)V
.registers 7
.line 1
invoke-virtual {p1}, Lokio/Buffer;->size()J
move-result-wide v0
.line 2
iget v2, p0, Lio/grpc/okhttp/OkHttpClientStream;->window:I
int-to-long v2, v2
sub-long/2addr v2, v0
long-to-int v0, v2
iput v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->window:I
.line 3
iget v0, p0, Lio/grpc/okhttp/OkHttpClientStream;->window:I
if-gez v0, :cond_35
.line 4
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->frameWriter:Lio/grpc/okhttp/AsyncFrameWriter;
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object p2
invoke-virtual {p2}, Ljava/lang/Integer;->intValue()I
move-result p2
sget-object v0, Lio/grpc/okhttp/internal/framed/ErrorCode;->FLOW_CONTROL_ERROR:Lio/grpc/okhttp/internal/framed/ErrorCode;
invoke-virtual {p1, p2, v0}, Lio/grpc/okhttp/AsyncFrameWriter;->rstStream(ILio/grpc/okhttp/internal/framed/ErrorCode;)V
.line 5
iget-object p1, p0, Lio/grpc/okhttp/OkHttpClientStream;->transport:Lio/grpc/okhttp/OkHttpClientTransport;
invoke-virtual {p0}, Lio/grpc/okhttp/OkHttpClientStream;->id()Ljava/lang/Integer;
move-result-object p2
invoke-virtual {p2}, Ljava/lang/Integer;->intValue()I
move-result p2
sget-object v0, Lio/grpc/Status;->INTERNAL:Lio/grpc/Status;
const-string v1, "Received data size exceeded our receiving window size"
invoke-virtual {v0, v1}, Lio/grpc/Status;->withDescription(Ljava/lang/String;)Lio/grpc/Status;
move-result-object v0
const/4 v1, 0x0
invoke-virtual {p1, p2, v0, v1}, Lio/grpc/okhttp/OkHttpClientTransport;->finishStream(ILio/grpc/Status;Lio/grpc/okhttp/internal/framed/ErrorCode;)V
return-void
.line 6
:cond_35
new-instance v0, Lio/grpc/okhttp/OkHttpReadableBuffer;
invoke-direct {v0, p1}, Lio/grpc/okhttp/OkHttpReadableBuffer;-><init>(Lokio/Buffer;)V
invoke-super {p0, v0, p2}, Lio/grpc/internal/Http2ClientStream;->transportDataReceived(Lio/grpc/internal/ReadableBuffer;Z)V
return-void
.end method
.method public transportHeadersReceived(Ljava/util/List;Z)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Lio/grpc/okhttp/internal/framed/Header;",
">;Z)V"
}
.end annotation
if-eqz p2, :cond_a
.line 1
invoke-static {p1}, Lio/grpc/okhttp/Utils;->convertTrailers(Ljava/util/List;)Lio/grpc/Metadata;
move-result-object p1
invoke-virtual {p0, p1}, Lio/grpc/internal/Http2ClientStream;->transportTrailersReceived(Lio/grpc/Metadata;)V
goto :goto_11
.line 2
:cond_a
invoke-static {p1}, Lio/grpc/okhttp/Utils;->convertHeaders(Ljava/util/List;)Lio/grpc/Metadata;
move-result-object p1
invoke-virtual {p0, p1}, Lio/grpc/internal/Http2ClientStream;->transportHeadersReceived(Lio/grpc/Metadata;)V
:goto_11
return-void
.end method