MetadataApplierImpl.smali
.class final Lio/grpc/internal/MetadataApplierImpl;
.super Ljava/lang/Object;
.source "MetadataApplierImpl.java"
# interfaces
.implements Lio/grpc/CallCredentials$MetadataApplier;
# instance fields
.field private final callOptions:Lio/grpc/CallOptions;
.field delayedStream:Lio/grpc/internal/DelayedStream;
.field finalized:Z
.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 origHeaders:Lio/grpc/Metadata;
.field private returnedStream:Lio/grpc/internal/ClientStream;
.field private final transport:Lio/grpc/internal/ClientTransport;
# direct methods
.method constructor <init>(Lio/grpc/internal/ClientTransport;Lio/grpc/MethodDescriptor;Lio/grpc/Metadata;Lio/grpc/CallOptions;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/grpc/internal/ClientTransport;",
"Lio/grpc/MethodDescriptor<",
"**>;",
"Lio/grpc/Metadata;",
"Lio/grpc/CallOptions;",
")V"
}
.end annotation
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
iput-object v0, p0, Lio/grpc/internal/MetadataApplierImpl;->lock:Ljava/lang/Object;
.line 3
iput-object p1, p0, Lio/grpc/internal/MetadataApplierImpl;->transport:Lio/grpc/internal/ClientTransport;
.line 4
iput-object p2, p0, Lio/grpc/internal/MetadataApplierImpl;->method:Lio/grpc/MethodDescriptor;
.line 5
iput-object p3, p0, Lio/grpc/internal/MetadataApplierImpl;->origHeaders:Lio/grpc/Metadata;
.line 6
iput-object p4, p0, Lio/grpc/internal/MetadataApplierImpl;->callOptions:Lio/grpc/CallOptions;
return-void
.end method
.method private finalizeWith(Lio/grpc/internal/ClientStream;)V
.registers 5
.line 1
iget-boolean v0, p0, Lio/grpc/internal/MetadataApplierImpl;->finalized:Z
const/4 v1, 0x1
xor-int/2addr v0, v1
const-string v2, "already finalized"
invoke-static {v0, v2}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 2
iput-boolean v1, p0, Lio/grpc/internal/MetadataApplierImpl;->finalized:Z
.line 3
iget-object v0, p0, Lio/grpc/internal/MetadataApplierImpl;->lock:Ljava/lang/Object;
monitor-enter v0
.line 4
:try_start_e
iget-object v2, p0, Lio/grpc/internal/MetadataApplierImpl;->returnedStream:Lio/grpc/internal/ClientStream;
if-nez v2, :cond_16
.line 5
iput-object p1, p0, Lio/grpc/internal/MetadataApplierImpl;->returnedStream:Lio/grpc/internal/ClientStream;
.line 6
monitor-exit v0
return-void
.line 7
:cond_16
monitor-exit v0
:try_end_17
.catchall {:try_start_e .. :try_end_17} :catchall_28
.line 8
iget-object v0, p0, Lio/grpc/internal/MetadataApplierImpl;->delayedStream:Lio/grpc/internal/DelayedStream;
if-eqz v0, :cond_1c
goto :goto_1d
:cond_1c
const/4 v1, 0x0
:goto_1d
const-string v0, "delayedStream is null"
invoke-static {v1, v0}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 9
iget-object v0, p0, Lio/grpc/internal/MetadataApplierImpl;->delayedStream:Lio/grpc/internal/DelayedStream;
invoke-virtual {v0, p1}, Lio/grpc/internal/DelayedStream;->setStream(Lio/grpc/internal/ClientStream;)V
return-void
:catchall_28
move-exception p1
.line 10
:try_start_29
monitor-exit v0
:try_end_2a
.catchall {:try_start_29 .. :try_end_2a} :catchall_28
throw p1
.end method
# virtual methods
.method public apply(Lio/grpc/Metadata;)V
.registers 5
.line 1
iget-boolean v0, p0, Lio/grpc/internal/MetadataApplierImpl;->finalized:Z
xor-int/lit8 v0, v0, 0x1
const-string v1, "apply() or fail() already called"
invoke-static {v0, v1}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
const-string v0, "headers"
.line 2
invoke-static {p1, v0}, Lcom/google/common/base/r;->a(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 3
iget-object v0, p0, Lio/grpc/internal/MetadataApplierImpl;->origHeaders:Lio/grpc/Metadata;
invoke-virtual {v0, p1}, Lio/grpc/Metadata;->merge(Lio/grpc/Metadata;)V
.line 4
iget-object p1, p0, Lio/grpc/internal/MetadataApplierImpl;->transport:Lio/grpc/internal/ClientTransport;
iget-object v0, p0, Lio/grpc/internal/MetadataApplierImpl;->method:Lio/grpc/MethodDescriptor;
iget-object v1, p0, Lio/grpc/internal/MetadataApplierImpl;->origHeaders:Lio/grpc/Metadata;
iget-object v2, p0, Lio/grpc/internal/MetadataApplierImpl;->callOptions:Lio/grpc/CallOptions;
invoke-interface {p1, v0, v1, v2}, Lio/grpc/internal/ClientTransport;->newStream(Lio/grpc/MethodDescriptor;Lio/grpc/Metadata;Lio/grpc/CallOptions;)Lio/grpc/internal/ClientStream;
move-result-object p1
invoke-direct {p0, p1}, Lio/grpc/internal/MetadataApplierImpl;->finalizeWith(Lio/grpc/internal/ClientStream;)V
return-void
.end method
.method public fail(Lio/grpc/Status;)V
.registers 4
.line 1
invoke-virtual {p1}, Lio/grpc/Status;->isOk()Z
move-result v0
xor-int/lit8 v0, v0, 0x1
const-string v1, "Cannot fail with OK status"
invoke-static {v0, v1}, Lcom/google/common/base/r;->a(ZLjava/lang/Object;)V
.line 2
iget-boolean v0, p0, Lio/grpc/internal/MetadataApplierImpl;->finalized:Z
xor-int/lit8 v0, v0, 0x1
const-string v1, "apply() or fail() already called"
invoke-static {v0, v1}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 3
new-instance v0, Lio/grpc/internal/FailingClientStream;
invoke-direct {v0, p1}, Lio/grpc/internal/FailingClientStream;-><init>(Lio/grpc/Status;)V
invoke-direct {p0, v0}, Lio/grpc/internal/MetadataApplierImpl;->finalizeWith(Lio/grpc/internal/ClientStream;)V
return-void
.end method
.method returnStream()Lio/grpc/internal/ClientStream;
.registers 3
.line 1
iget-object v0, p0, Lio/grpc/internal/MetadataApplierImpl;->lock:Ljava/lang/Object;
monitor-enter v0
.line 2
:try_start_3
iget-object v1, p0, Lio/grpc/internal/MetadataApplierImpl;->returnedStream:Lio/grpc/internal/ClientStream;
if-nez v1, :cond_14
.line 3
new-instance v1, Lio/grpc/internal/DelayedStream;
invoke-direct {v1}, Lio/grpc/internal/DelayedStream;-><init>()V
iput-object v1, p0, Lio/grpc/internal/MetadataApplierImpl;->delayedStream:Lio/grpc/internal/DelayedStream;
.line 4
iget-object v1, p0, Lio/grpc/internal/MetadataApplierImpl;->delayedStream:Lio/grpc/internal/DelayedStream;
iput-object v1, p0, Lio/grpc/internal/MetadataApplierImpl;->returnedStream:Lio/grpc/internal/ClientStream;
monitor-exit v0
return-object v1
.line 5
:cond_14
iget-object v1, p0, Lio/grpc/internal/MetadataApplierImpl;->returnedStream:Lio/grpc/internal/ClientStream;
monitor-exit v0
return-object v1
:catchall_18
move-exception v1
.line 6
monitor-exit v0
:try_end_1a
.catchall {:try_start_3 .. :try_end_1a} :catchall_18
throw v1
.end method