Http2Stream.smali
.class public final Lokhttp3/internal/http2/Http2Stream;
.super Ljava/lang/Object;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lokhttp3/internal/http2/Http2Stream$StreamTimeout;,
Lokhttp3/internal/http2/Http2Stream$FramingSink;,
Lokhttp3/internal/http2/Http2Stream$FramingSource;
}
.end annotation
# static fields
.field static final synthetic $assertionsDisabled:Z
# instance fields
.field bytesLeftInWriteWindow:J
.field final connection:Lokhttp3/internal/http2/Http2Connection;
.field errorCode:Lokhttp3/internal/http2/ErrorCode;
.field private hasResponseHeaders:Z
.field final id:I
.field final readTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
.field private final requestHeaders:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lokhttp3/internal/http2/Header;",
">;"
}
.end annotation
.end field
.field private responseHeaders:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Lokhttp3/internal/http2/Header;",
">;"
}
.end annotation
.end field
.field final sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
.field private final source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
.field unacknowledgedBytesRead:J
.field final writeTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
# direct methods
.method static constructor <clinit>()V
.registers 1
const-class v0, Lokhttp3/internal/http2/Http2Stream;
invoke-virtual {v0}, Ljava/lang/Class;->desiredAssertionStatus()Z
move-result v0
if-nez v0, :cond_c
const/4 v0, 0x1
:goto_9
sput-boolean v0, Lokhttp3/internal/http2/Http2Stream;->$assertionsDisabled:Z
return-void
:cond_c
const/4 v0, 0x0
goto :goto_9
.end method
.method constructor <init>(ILokhttp3/internal/http2/Http2Connection;ZZLjava/util/List;)V
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lokhttp3/internal/http2/Http2Connection;",
"ZZ",
"Ljava/util/List",
"<",
"Lokhttp3/internal/http2/Header;",
">;)V"
}
.end annotation
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-wide/16 v0, 0x0
iput-wide v0, p0, Lokhttp3/internal/http2/Http2Stream;->unacknowledgedBytesRead:J
new-instance v0, Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
invoke-direct {v0, p0}, Lokhttp3/internal/http2/Http2Stream$StreamTimeout;-><init>(Lokhttp3/internal/http2/Http2Stream;)V
iput-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->readTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
new-instance v0, Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
invoke-direct {v0, p0}, Lokhttp3/internal/http2/Http2Stream$StreamTimeout;-><init>(Lokhttp3/internal/http2/Http2Stream;)V
iput-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->writeTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
const/4 v0, 0x0
iput-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
if-nez p2, :cond_23
new-instance v0, Ljava/lang/NullPointerException;
const-string/jumbo v1, "connection == null"
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v0
:cond_23
if-nez p5, :cond_2e
new-instance v0, Ljava/lang/NullPointerException;
const-string/jumbo v1, "requestHeaders == null"
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v0
:cond_2e
iput p1, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
iput-object p2, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget-object v0, p2, Lokhttp3/internal/http2/Http2Connection;->peerSettings:Lokhttp3/internal/http2/Settings;
invoke-virtual {v0}, Lokhttp3/internal/http2/Settings;->getInitialWindowSize()I
move-result v0
int-to-long v0, v0
iput-wide v0, p0, Lokhttp3/internal/http2/Http2Stream;->bytesLeftInWriteWindow:J
new-instance v0, Lokhttp3/internal/http2/Http2Stream$FramingSource;
iget-object v1, p2, Lokhttp3/internal/http2/Http2Connection;->okHttpSettings:Lokhttp3/internal/http2/Settings;
invoke-virtual {v1}, Lokhttp3/internal/http2/Settings;->getInitialWindowSize()I
move-result v1
int-to-long v2, v1
invoke-direct {v0, p0, v2, v3}, Lokhttp3/internal/http2/Http2Stream$FramingSource;-><init>(Lokhttp3/internal/http2/Http2Stream;J)V
iput-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
new-instance v0, Lokhttp3/internal/http2/Http2Stream$FramingSink;
invoke-direct {v0, p0}, Lokhttp3/internal/http2/Http2Stream$FramingSink;-><init>(Lokhttp3/internal/http2/Http2Stream;)V
iput-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
iput-boolean p4, v0, Lokhttp3/internal/http2/Http2Stream$FramingSource;->finished:Z
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iput-boolean p3, v0, Lokhttp3/internal/http2/Http2Stream$FramingSink;->finished:Z
iput-object p5, p0, Lokhttp3/internal/http2/Http2Stream;->requestHeaders:Ljava/util/List;
return-void
.end method
.method private closeInternal(Lokhttp3/internal/http2/ErrorCode;)Z
.registers 4
const/4 v0, 0x0
sget-boolean v1, Lokhttp3/internal/http2/Http2Stream;->$assertionsDisabled:Z
if-nez v1, :cond_11
invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_11
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_11
monitor-enter p0
:try_start_12
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
if-eqz v1, :cond_18
monitor-exit p0
:goto_17
return v0
:cond_18
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
iget-boolean v1, v1, Lokhttp3/internal/http2/Http2Stream$FramingSource;->finished:Z
if-eqz v1, :cond_29
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-boolean v1, v1, Lokhttp3/internal/http2/Http2Stream$FramingSink;->finished:Z
if-eqz v1, :cond_29
monitor-exit p0
goto :goto_17
:catchall_26
move-exception v0
monitor-exit p0
:try_end_28
.catchall {:try_start_12 .. :try_end_28} :catchall_26
throw v0
:cond_29
:try_start_29
iput-object p1, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
monitor-exit p0
:try_end_2f
.catchall {:try_start_29 .. :try_end_2f} :catchall_26
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget v1, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
invoke-virtual {v0, v1}, Lokhttp3/internal/http2/Http2Connection;->removeStream(I)Lokhttp3/internal/http2/Http2Stream;
const/4 v0, 0x1
goto :goto_17
.end method
# virtual methods
.method addBytesToWriteWindow(J)V
.registers 6
iget-wide v0, p0, Lokhttp3/internal/http2/Http2Stream;->bytesLeftInWriteWindow:J
add-long/2addr v0, p1
iput-wide v0, p0, Lokhttp3/internal/http2/Http2Stream;->bytesLeftInWriteWindow:J
const-wide/16 v0, 0x0
cmp-long v0, p1, v0
if-lez v0, :cond_e
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
:cond_e
return-void
.end method
.method cancelStreamIfNecessary()V
.registers 3
sget-boolean v0, Lokhttp3/internal/http2/Http2Stream;->$assertionsDisabled:Z
if-nez v0, :cond_10
invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_10
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_10
monitor-enter p0
:try_start_11
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
iget-boolean v0, v0, Lokhttp3/internal/http2/Http2Stream$FramingSource;->finished:Z
if-nez v0, :cond_37
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
iget-boolean v0, v0, Lokhttp3/internal/http2/Http2Stream$FramingSource;->closed:Z
if-eqz v0, :cond_37
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-boolean v0, v0, Lokhttp3/internal/http2/Http2Stream$FramingSink;->finished:Z
if-nez v0, :cond_29
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-boolean v0, v0, Lokhttp3/internal/http2/Http2Stream$FramingSink;->closed:Z
if-eqz v0, :cond_37
:cond_29
const/4 v0, 0x1
:goto_2a
invoke-virtual {p0}, Lokhttp3/internal/http2/Http2Stream;->isOpen()Z
move-result v1
monitor-exit p0
:try_end_2f
.catchall {:try_start_11 .. :try_end_2f} :catchall_39
if-eqz v0, :cond_3c
sget-object v0, Lokhttp3/internal/http2/ErrorCode;->CANCEL:Lokhttp3/internal/http2/ErrorCode;
invoke-virtual {p0, v0}, Lokhttp3/internal/http2/Http2Stream;->close(Lokhttp3/internal/http2/ErrorCode;)V
:cond_36
:goto_36
return-void
:cond_37
const/4 v0, 0x0
goto :goto_2a
:catchall_39
move-exception v0
:try_start_3a
monitor-exit p0
:try_end_3b
.catchall {:try_start_3a .. :try_end_3b} :catchall_39
throw v0
:cond_3c
if-nez v1, :cond_36
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget v1, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
invoke-virtual {v0, v1}, Lokhttp3/internal/http2/Http2Connection;->removeStream(I)Lokhttp3/internal/http2/Http2Stream;
goto :goto_36
.end method
.method checkOutNotClosed()V
.registers 3
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-boolean v0, v0, Lokhttp3/internal/http2/Http2Stream$FramingSink;->closed:Z
if-eqz v0, :cond_f
new-instance v0, Ljava/io/IOException;
const-string/jumbo v1, "stream closed"
invoke-direct {v0, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v0
:cond_f
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-boolean v0, v0, Lokhttp3/internal/http2/Http2Stream$FramingSink;->finished:Z
if-eqz v0, :cond_1e
new-instance v0, Ljava/io/IOException;
const-string/jumbo v1, "stream finished"
invoke-direct {v0, v1}, Ljava/io/IOException;-><init>(Ljava/lang/String;)V
throw v0
:cond_1e
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
if-eqz v0, :cond_2a
new-instance v0, Lokhttp3/internal/http2/StreamResetException;
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
invoke-direct {v0, v1}, Lokhttp3/internal/http2/StreamResetException;-><init>(Lokhttp3/internal/http2/ErrorCode;)V
throw v0
:cond_2a
return-void
.end method
.method public close(Lokhttp3/internal/http2/ErrorCode;)V
.registers 4
invoke-direct {p0, p1}, Lokhttp3/internal/http2/Http2Stream;->closeInternal(Lokhttp3/internal/http2/ErrorCode;)Z
move-result v0
if-nez v0, :cond_7
:goto_6
return-void
:cond_7
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget v1, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
invoke-virtual {v0, v1, p1}, Lokhttp3/internal/http2/Http2Connection;->writeSynReset(ILokhttp3/internal/http2/ErrorCode;)V
goto :goto_6
.end method
.method public closeLater(Lokhttp3/internal/http2/ErrorCode;)V
.registers 4
invoke-direct {p0, p1}, Lokhttp3/internal/http2/Http2Stream;->closeInternal(Lokhttp3/internal/http2/ErrorCode;)Z
move-result v0
if-nez v0, :cond_7
:goto_6
return-void
:cond_7
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget v1, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
invoke-virtual {v0, v1, p1}, Lokhttp3/internal/http2/Http2Connection;->writeSynResetLater(ILokhttp3/internal/http2/ErrorCode;)V
goto :goto_6
.end method
.method public getConnection()Lokhttp3/internal/http2/Http2Connection;
.registers 2
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
return-object v0
.end method
.method public declared-synchronized getErrorCode()Lokhttp3/internal/http2/ErrorCode;
.registers 2
monitor-enter p0
:try_start_1
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
:try_end_3
.catchall {:try_start_1 .. :try_end_3} :catchall_5
monitor-exit p0
return-object v0
:catchall_5
move-exception v0
monitor-exit p0
throw v0
.end method
.method public getId()I
.registers 2
iget v0, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
return v0
.end method
.method public getRequestHeaders()Ljava/util/List;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lokhttp3/internal/http2/Header;",
">;"
}
.end annotation
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->requestHeaders:Ljava/util/List;
return-object v0
.end method
.method public getSink()Lokio/p;
.registers 3
monitor-enter p0
:try_start_1
iget-boolean v0, p0, Lokhttp3/internal/http2/Http2Stream;->hasResponseHeaders:Z
if-nez v0, :cond_17
invoke-virtual {p0}, Lokhttp3/internal/http2/Http2Stream;->isLocallyInitiated()Z
move-result v0
if-nez v0, :cond_17
new-instance v0, Ljava/lang/IllegalStateException;
const-string/jumbo v1, "reply before requesting the sink"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:catchall_14
move-exception v0
monitor-exit p0
:try_end_16
.catchall {:try_start_1 .. :try_end_16} :catchall_14
throw v0
:cond_17
:try_start_17
monitor-exit p0
:try_end_18
.catchall {:try_start_17 .. :try_end_18} :catchall_14
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
return-object v0
.end method
.method public getSource()Lokio/q;
.registers 2
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
return-object v0
.end method
.method public isLocallyInitiated()Z
.registers 5
const/4 v2, 0x0
const/4 v1, 0x1
iget v0, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
and-int/lit8 v0, v0, 0x1
if-ne v0, v1, :cond_10
move v0, v1
:goto_9
iget-object v3, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget-boolean v3, v3, Lokhttp3/internal/http2/Http2Connection;->client:Z
if-ne v3, v0, :cond_12
:goto_f
return v1
:cond_10
move v0, v2
goto :goto_9
:cond_12
move v1, v2
goto :goto_f
.end method
.method public declared-synchronized isOpen()Z
.registers 3
const/4 v0, 0x0
monitor-enter p0
:try_start_2
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
:try_end_4
.catchall {:try_start_2 .. :try_end_4} :catchall_26
if-eqz v1, :cond_8
:cond_6
:goto_6
monitor-exit p0
return v0
:cond_8
:try_start_8
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
iget-boolean v1, v1, Lokhttp3/internal/http2/Http2Stream$FramingSource;->finished:Z
if-nez v1, :cond_14
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
iget-boolean v1, v1, Lokhttp3/internal/http2/Http2Stream$FramingSource;->closed:Z
if-eqz v1, :cond_24
:cond_14
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-boolean v1, v1, Lokhttp3/internal/http2/Http2Stream$FramingSink;->finished:Z
if-nez v1, :cond_20
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
iget-boolean v1, v1, Lokhttp3/internal/http2/Http2Stream$FramingSink;->closed:Z
if-eqz v1, :cond_24
:cond_20
iget-boolean v1, p0, Lokhttp3/internal/http2/Http2Stream;->hasResponseHeaders:Z
:try_end_22
.catchall {:try_start_8 .. :try_end_22} :catchall_26
if-nez v1, :cond_6
:cond_24
const/4 v0, 0x1
goto :goto_6
:catchall_26
move-exception v0
monitor-exit p0
throw v0
.end method
.method public readTimeout()Lokio/r;
.registers 2
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->readTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
return-object v0
.end method
.method receiveData(Lokio/e;I)V
.registers 7
sget-boolean v0, Lokhttp3/internal/http2/Http2Stream;->$assertionsDisabled:Z
if-nez v0, :cond_10
invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_10
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_10
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
int-to-long v2, p2
invoke-virtual {v0, p1, v2, v3}, Lokhttp3/internal/http2/Http2Stream$FramingSource;->receive(Lokio/e;J)V
return-void
.end method
.method receiveFin()V
.registers 3
sget-boolean v0, Lokhttp3/internal/http2/Http2Stream;->$assertionsDisabled:Z
if-nez v0, :cond_10
invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_10
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_10
monitor-enter p0
:try_start_11
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->source:Lokhttp3/internal/http2/Http2Stream$FramingSource;
const/4 v1, 0x1
iput-boolean v1, v0, Lokhttp3/internal/http2/Http2Stream$FramingSource;->finished:Z
invoke-virtual {p0}, Lokhttp3/internal/http2/Http2Stream;->isOpen()Z
move-result v0
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
monitor-exit p0
:try_end_1e
.catchall {:try_start_11 .. :try_end_1e} :catchall_28
if-nez v0, :cond_27
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget v1, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
invoke-virtual {v0, v1}, Lokhttp3/internal/http2/Http2Connection;->removeStream(I)Lokhttp3/internal/http2/Http2Stream;
:cond_27
return-void
:catchall_28
move-exception v0
:try_start_29
monitor-exit p0
:try_end_2a
.catchall {:try_start_29 .. :try_end_2a} :catchall_28
throw v0
.end method
.method receiveHeaders(Ljava/util/List;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lokhttp3/internal/http2/Header;",
">;)V"
}
.end annotation
const/4 v0, 0x1
sget-boolean v1, Lokhttp3/internal/http2/Http2Stream;->$assertionsDisabled:Z
if-nez v1, :cond_11
invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_11
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_11
monitor-enter p0
const/4 v1, 0x1
:try_start_13
iput-boolean v1, p0, Lokhttp3/internal/http2/Http2Stream;->hasResponseHeaders:Z
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->responseHeaders:Ljava/util/List;
if-nez v1, :cond_2d
iput-object p1, p0, Lokhttp3/internal/http2/Http2Stream;->responseHeaders:Ljava/util/List;
invoke-virtual {p0}, Lokhttp3/internal/http2/Http2Stream;->isOpen()Z
move-result v0
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
:goto_22
monitor-exit p0
:try_end_23
.catchall {:try_start_13 .. :try_end_23} :catchall_41
if-nez v0, :cond_2c
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget v1, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
invoke-virtual {v0, v1}, Lokhttp3/internal/http2/Http2Connection;->removeStream(I)Lokhttp3/internal/http2/Http2Stream;
:cond_2c
return-void
:cond_2d
:try_start_2d
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
iget-object v2, p0, Lokhttp3/internal/http2/Http2Stream;->responseHeaders:Ljava/util/List;
invoke-interface {v1, v2}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
const/4 v2, 0x0
invoke-interface {v1, v2}, Ljava/util/List;->add(Ljava/lang/Object;)Z
invoke-interface {v1, p1}, Ljava/util/List;->addAll(Ljava/util/Collection;)Z
iput-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->responseHeaders:Ljava/util/List;
goto :goto_22
:catchall_41
move-exception v0
monitor-exit p0
:try_end_43
.catchall {:try_start_2d .. :try_end_43} :catchall_41
throw v0
.end method
.method declared-synchronized receiveRstStream(Lokhttp3/internal/http2/ErrorCode;)V
.registers 3
monitor-enter p0
:try_start_1
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
if-nez v0, :cond_a
iput-object p1, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
invoke-virtual {p0}, Ljava/lang/Object;->notifyAll()V
:try_end_a
.catchall {:try_start_1 .. :try_end_a} :catchall_c
:cond_a
monitor-exit p0
return-void
:catchall_c
move-exception v0
monitor-exit p0
throw v0
.end method
.method public sendResponseHeaders(Ljava/util/List;Z)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List",
"<",
"Lokhttp3/internal/http2/Header;",
">;Z)V"
}
.end annotation
const/4 v0, 0x1
sget-boolean v1, Lokhttp3/internal/http2/Http2Stream;->$assertionsDisabled:Z
if-nez v1, :cond_11
invoke-static {p0}, Ljava/lang/Thread;->holdsLock(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_11
new-instance v0, Ljava/lang/AssertionError;
invoke-direct {v0}, Ljava/lang/AssertionError;-><init>()V
throw v0
:cond_11
if-nez p1, :cond_1c
new-instance v0, Ljava/lang/NullPointerException;
const-string/jumbo v1, "responseHeaders == null"
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
throw v0
:cond_1c
const/4 v1, 0x0
monitor-enter p0
const/4 v2, 0x1
:try_start_1f
iput-boolean v2, p0, Lokhttp3/internal/http2/Http2Stream;->hasResponseHeaders:Z
if-nez p2, :cond_3b
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->sink:Lokhttp3/internal/http2/Http2Stream$FramingSink;
const/4 v2, 0x1
iput-boolean v2, v1, Lokhttp3/internal/http2/Http2Stream$FramingSink;->finished:Z
:goto_28
monitor-exit p0
:try_end_29
.catchall {:try_start_1f .. :try_end_29} :catchall_38
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
iget v2, p0, Lokhttp3/internal/http2/Http2Stream;->id:I
invoke-virtual {v1, v2, v0, p1}, Lokhttp3/internal/http2/Http2Connection;->writeSynReply(IZLjava/util/List;)V
if-eqz v0, :cond_37
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->connection:Lokhttp3/internal/http2/Http2Connection;
invoke-virtual {v0}, Lokhttp3/internal/http2/Http2Connection;->flush()V
:cond_37
return-void
:catchall_38
move-exception v0
:try_start_39
monitor-exit p0
:try_end_3a
.catchall {:try_start_39 .. :try_end_3a} :catchall_38
throw v0
:cond_3b
move v0, v1
goto :goto_28
.end method
.method public declared-synchronized takeResponseHeaders()Ljava/util/List;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Ljava/util/List",
"<",
"Lokhttp3/internal/http2/Header;",
">;"
}
.end annotation
monitor-enter p0
:try_start_1
invoke-virtual {p0}, Lokhttp3/internal/http2/Http2Stream;->isLocallyInitiated()Z
move-result v0
if-nez v0, :cond_13
new-instance v0, Ljava/lang/IllegalStateException;
const-string/jumbo v1, "servers cannot read response headers"
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw v0
:try_end_10
.catchall {:try_start_1 .. :try_end_10} :catchall_10
:catchall_10
move-exception v0
monitor-exit p0
throw v0
:cond_13
:try_start_13
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->readTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
invoke-virtual {v0}, Lokhttp3/internal/http2/Http2Stream$StreamTimeout;->enter()V
:try_end_18
.catchall {:try_start_13 .. :try_end_18} :catchall_10
:goto_18
:try_start_18
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->responseHeaders:Ljava/util/List;
if-nez v0, :cond_2b
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
if-nez v0, :cond_2b
invoke-virtual {p0}, Lokhttp3/internal/http2/Http2Stream;->waitForIo()V
:try_end_23
.catchall {:try_start_18 .. :try_end_23} :catchall_24
goto :goto_18
:catchall_24
move-exception v0
:try_start_25
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->readTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
invoke-virtual {v1}, Lokhttp3/internal/http2/Http2Stream$StreamTimeout;->exitAndThrowIfTimedOut()V
throw v0
:cond_2b
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->readTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
invoke-virtual {v0}, Lokhttp3/internal/http2/Http2Stream$StreamTimeout;->exitAndThrowIfTimedOut()V
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->responseHeaders:Ljava/util/List;
if-eqz v0, :cond_39
const/4 v1, 0x0
iput-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->responseHeaders:Ljava/util/List;
:try_end_37
.catchall {:try_start_25 .. :try_end_37} :catchall_10
monitor-exit p0
return-object v0
:cond_39
:try_start_39
new-instance v0, Lokhttp3/internal/http2/StreamResetException;
iget-object v1, p0, Lokhttp3/internal/http2/Http2Stream;->errorCode:Lokhttp3/internal/http2/ErrorCode;
invoke-direct {v0, v1}, Lokhttp3/internal/http2/StreamResetException;-><init>(Lokhttp3/internal/http2/ErrorCode;)V
throw v0
:try_end_41
.catchall {:try_start_39 .. :try_end_41} :catchall_10
.end method
.method waitForIo()V
.registers 2
:try_start_0
invoke-virtual {p0}, Ljava/lang/Object;->wait()V
:try_end_3
.catch Ljava/lang/InterruptedException; {:try_start_0 .. :try_end_3} :catch_4
return-void
:catch_4
move-exception v0
new-instance v0, Ljava/io/InterruptedIOException;
invoke-direct {v0}, Ljava/io/InterruptedIOException;-><init>()V
throw v0
.end method
.method public writeTimeout()Lokio/r;
.registers 2
iget-object v0, p0, Lokhttp3/internal/http2/Http2Stream;->writeTimeout:Lokhttp3/internal/http2/Http2Stream$StreamTimeout;
return-object v0
.end method