ServerCallImpl.smali
.class final Lio/grpc/internal/ServerCallImpl;
.super Lio/grpc/ServerCall;
.source "ServerCallImpl.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lio/grpc/internal/ServerCallImpl$ServerStreamListenerImpl;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<ReqT:",
"Ljava/lang/Object;",
"RespT:",
"Ljava/lang/Object;",
">",
"Lio/grpc/ServerCall<",
"TReqT;TRespT;>;"
}
.end annotation
# instance fields
.field private volatile cancelled:Z
.field private closeCalled:Z
.field private compressor:Lio/grpc/Compressor;
.field private final compressorRegistry:Lio/grpc/CompressorRegistry;
.field private final context:Lio/grpc/Context$CancellableContext;
.field private final decompressorRegistry:Lio/grpc/DecompressorRegistry;
.field private final messageAcceptEncoding:Ljava/lang/String;
.field private final method:Lio/grpc/MethodDescriptor;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/grpc/MethodDescriptor<",
"TReqT;TRespT;>;"
}
.end annotation
.end field
.field private sendHeadersCalled:Z
.field private final stream:Lio/grpc/internal/ServerStream;
# direct methods
.method constructor <init>(Lio/grpc/internal/ServerStream;Lio/grpc/MethodDescriptor;Lio/grpc/Metadata;Lio/grpc/Context$CancellableContext;Lio/grpc/DecompressorRegistry;Lio/grpc/CompressorRegistry;)V
.registers 7
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/grpc/internal/ServerStream;",
"Lio/grpc/MethodDescriptor<",
"TReqT;TRespT;>;",
"Lio/grpc/Metadata;",
"Lio/grpc/Context$CancellableContext;",
"Lio/grpc/DecompressorRegistry;",
"Lio/grpc/CompressorRegistry;",
")V"
}
.end annotation
.line 1
invoke-direct {p0}, Lio/grpc/ServerCall;-><init>()V
.line 2
iput-object p1, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
.line 3
iput-object p2, p0, Lio/grpc/internal/ServerCallImpl;->method:Lio/grpc/MethodDescriptor;
.line 4
iput-object p4, p0, Lio/grpc/internal/ServerCallImpl;->context:Lio/grpc/Context$CancellableContext;
.line 5
sget-object p2, Lio/grpc/internal/GrpcUtil;->MESSAGE_ACCEPT_ENCODING_KEY:Lio/grpc/Metadata$Key;
invoke-virtual {p3, p2}, Lio/grpc/Metadata;->get(Lio/grpc/Metadata$Key;)Ljava/lang/Object;
move-result-object p2
check-cast p2, Ljava/lang/String;
iput-object p2, p0, Lio/grpc/internal/ServerCallImpl;->messageAcceptEncoding:Ljava/lang/String;
.line 6
iput-object p5, p0, Lio/grpc/internal/ServerCallImpl;->decompressorRegistry:Lio/grpc/DecompressorRegistry;
.line 7
iput-object p6, p0, Lio/grpc/internal/ServerCallImpl;->compressorRegistry:Lio/grpc/CompressorRegistry;
.line 8
sget-object p2, Lio/grpc/internal/GrpcUtil;->MESSAGE_ENCODING_KEY:Lio/grpc/Metadata$Key;
invoke-virtual {p3, p2}, Lio/grpc/Metadata;->containsKey(Lio/grpc/Metadata$Key;)Z
move-result p2
if-eqz p2, :cond_48
.line 9
sget-object p2, Lio/grpc/internal/GrpcUtil;->MESSAGE_ENCODING_KEY:Lio/grpc/Metadata$Key;
invoke-virtual {p3, p2}, Lio/grpc/Metadata;->get(Lio/grpc/Metadata$Key;)Ljava/lang/Object;
move-result-object p2
check-cast p2, Ljava/lang/String;
.line 10
invoke-virtual {p5, p2}, Lio/grpc/DecompressorRegistry;->lookupDecompressor(Ljava/lang/String;)Lio/grpc/Decompressor;
move-result-object p3
if-eqz p3, :cond_31
.line 11
invoke-interface {p1, p3}, Lio/grpc/internal/Stream;->setDecompressor(Lio/grpc/Decompressor;)V
goto :goto_48
.line 12
:cond_31
sget-object p1, Lio/grpc/Status;->UNIMPLEMENTED:Lio/grpc/Status;
const/4 p3, 0x1
new-array p3, p3, [Ljava/lang/Object;
const/4 p4, 0x0
aput-object p2, p3, p4
const-string p2, "Can\'t find decompressor for %s"
.line 13
invoke-static {p2, p3}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object p2
invoke-virtual {p1, p2}, Lio/grpc/Status;->withDescription(Ljava/lang/String;)Lio/grpc/Status;
move-result-object p1
.line 14
invoke-virtual {p1}, Lio/grpc/Status;->asRuntimeException()Lio/grpc/StatusRuntimeException;
move-result-object p1
throw p1
:cond_48
:goto_48
return-void
.end method
.method static synthetic access$000(Lio/grpc/internal/ServerCallImpl;)Z
.registers 1
.line 1
iget-boolean p0, p0, Lio/grpc/internal/ServerCallImpl;->cancelled:Z
return p0
.end method
.method static synthetic access$002(Lio/grpc/internal/ServerCallImpl;Z)Z
.registers 2
.line 1
iput-boolean p1, p0, Lio/grpc/internal/ServerCallImpl;->cancelled:Z
return p1
.end method
.method static synthetic access$100(Lio/grpc/internal/ServerCallImpl;)Lio/grpc/MethodDescriptor;
.registers 1
.line 1
iget-object p0, p0, Lio/grpc/internal/ServerCallImpl;->method:Lio/grpc/MethodDescriptor;
return-object p0
.end method
.method static synthetic access$200(Lio/grpc/internal/ServerCallImpl;)Lio/grpc/internal/ServerStream;
.registers 1
.line 1
iget-object p0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
return-object p0
.end method
# virtual methods
.method public attributes()Lio/grpc/Attributes;
.registers 2
.line 1
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {v0}, Lio/grpc/internal/ServerStream;->attributes()Lio/grpc/Attributes;
move-result-object v0
return-object v0
.end method
.method public close(Lio/grpc/Status;Lio/grpc/Metadata;)V
.registers 6
.line 1
iget-boolean v0, p0, Lio/grpc/internal/ServerCallImpl;->closeCalled:Z
const/4 v1, 0x1
xor-int/2addr v0, v1
const-string v2, "call already closed"
invoke-static {v0, v2}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 2
iput-boolean v1, p0, Lio/grpc/internal/ServerCallImpl;->closeCalled:Z
.line 3
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {v0, p1, p2}, Lio/grpc/internal/ServerStream;->close(Lio/grpc/Status;Lio/grpc/Metadata;)V
return-void
.end method
.method public getMethodDescriptor()Lio/grpc/MethodDescriptor;
.registers 2
.annotation system Ldalvik/annotation/Signature;
value = {
"()",
"Lio/grpc/MethodDescriptor<",
"TReqT;TRespT;>;"
}
.end annotation
.line 1
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->method:Lio/grpc/MethodDescriptor;
return-object v0
.end method
.method public isCancelled()Z
.registers 2
.line 1
iget-boolean v0, p0, Lio/grpc/internal/ServerCallImpl;->cancelled:Z
return v0
.end method
.method public isReady()Z
.registers 2
.line 1
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {v0}, Lio/grpc/internal/Stream;->isReady()Z
move-result v0
return v0
.end method
.method newServerStreamListener(Lio/grpc/ServerCall$Listener;)Lio/grpc/internal/ServerStreamListener;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/grpc/ServerCall$Listener<",
"TReqT;>;)",
"Lio/grpc/internal/ServerStreamListener;"
}
.end annotation
.line 1
new-instance v0, Lio/grpc/internal/ServerCallImpl$ServerStreamListenerImpl;
iget-object v1, p0, Lio/grpc/internal/ServerCallImpl;->context:Lio/grpc/Context$CancellableContext;
invoke-direct {v0, p0, p1, v1}, Lio/grpc/internal/ServerCallImpl$ServerStreamListenerImpl;-><init>(Lio/grpc/internal/ServerCallImpl;Lio/grpc/ServerCall$Listener;Lio/grpc/Context$CancellableContext;)V
return-object v0
.end method
.method public request(I)V
.registers 3
.line 1
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {v0, p1}, Lio/grpc/internal/Stream;->request(I)V
return-void
.end method
.method public sendHeaders(Lio/grpc/Metadata;)V
.registers 5
.line 1
iget-boolean v0, p0, Lio/grpc/internal/ServerCallImpl;->sendHeadersCalled:Z
const/4 v1, 0x1
xor-int/2addr v0, v1
const-string v2, "sendHeaders has already been called"
invoke-static {v0, v2}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 2
iget-boolean v0, p0, Lio/grpc/internal/ServerCallImpl;->closeCalled:Z
xor-int/2addr v0, v1
const-string v2, "call is closed"
invoke-static {v0, v2}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 3
sget-object v0, Lio/grpc/internal/GrpcUtil;->MESSAGE_ENCODING_KEY:Lio/grpc/Metadata$Key;
invoke-virtual {p1, v0}, Lio/grpc/Metadata;->removeAll(Lio/grpc/Metadata$Key;)Ljava/lang/Iterable;
.line 4
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
if-nez v0, :cond_1f
.line 5
sget-object v0, Lio/grpc/Codec$Identity;->NONE:Lio/grpc/Codec;
iput-object v0, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
goto :goto_3e
.line 6
:cond_1f
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->messageAcceptEncoding:Ljava/lang/String;
if-eqz v0, :cond_3a
.line 7
sget-object v2, Lio/grpc/internal/GrpcUtil;->ACCEPT_ENCODING_SPLITER:Lcom/google/common/base/w;
.line 8
invoke-virtual {v2, v0}, Lcom/google/common/base/w;->a(Ljava/lang/CharSequence;)Ljava/util/List;
move-result-object v0
.line 9
iget-object v2, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
invoke-interface {v2}, Lio/grpc/Compressor;->getMessageEncoding()Ljava/lang/String;
move-result-object v2
invoke-interface {v0, v2}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_3e
.line 10
sget-object v0, Lio/grpc/Codec$Identity;->NONE:Lio/grpc/Codec;
iput-object v0, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
goto :goto_3e
.line 11
:cond_3a
sget-object v0, Lio/grpc/Codec$Identity;->NONE:Lio/grpc/Codec;
iput-object v0, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
.line 12
:cond_3e
:goto_3e
sget-object v0, Lio/grpc/internal/GrpcUtil;->MESSAGE_ENCODING_KEY:Lio/grpc/Metadata$Key;
iget-object v2, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
invoke-interface {v2}, Lio/grpc/Compressor;->getMessageEncoding()Ljava/lang/String;
move-result-object v2
invoke-virtual {p1, v0, v2}, Lio/grpc/Metadata;->put(Lio/grpc/Metadata$Key;Ljava/lang/Object;)V
.line 13
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
iget-object v2, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
invoke-interface {v0, v2}, Lio/grpc/internal/Stream;->setCompressor(Lio/grpc/Compressor;)V
.line 14
sget-object v0, Lio/grpc/internal/GrpcUtil;->MESSAGE_ACCEPT_ENCODING_KEY:Lio/grpc/Metadata$Key;
invoke-virtual {p1, v0}, Lio/grpc/Metadata;->removeAll(Lio/grpc/Metadata$Key;)Ljava/lang/Iterable;
.line 15
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->decompressorRegistry:Lio/grpc/DecompressorRegistry;
invoke-virtual {v0}, Lio/grpc/DecompressorRegistry;->getRawAdvertisedMessageEncodings()Ljava/lang/String;
move-result-object v0
.line 16
invoke-virtual {v0}, Ljava/lang/String;->isEmpty()Z
move-result v2
if-nez v2, :cond_66
.line 17
sget-object v2, Lio/grpc/internal/GrpcUtil;->MESSAGE_ACCEPT_ENCODING_KEY:Lio/grpc/Metadata$Key;
invoke-virtual {p1, v2, v0}, Lio/grpc/Metadata;->put(Lio/grpc/Metadata$Key;Ljava/lang/Object;)V
.line 18
:cond_66
iput-boolean v1, p0, Lio/grpc/internal/ServerCallImpl;->sendHeadersCalled:Z
.line 19
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {v0, p1}, Lio/grpc/internal/ServerStream;->writeHeaders(Lio/grpc/Metadata;)V
return-void
.end method
.method public sendMessage(Ljava/lang/Object;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(TRespT;)V"
}
.end annotation
.line 1
iget-boolean v0, p0, Lio/grpc/internal/ServerCallImpl;->sendHeadersCalled:Z
const-string v1, "sendHeaders has not been called"
invoke-static {v0, v1}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 2
iget-boolean v0, p0, Lio/grpc/internal/ServerCallImpl;->closeCalled:Z
xor-int/lit8 v0, v0, 0x1
const-string v1, "call is closed"
invoke-static {v0, v1}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 3
:try_start_10
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->method:Lio/grpc/MethodDescriptor;
invoke-virtual {v0, p1}, Lio/grpc/MethodDescriptor;->streamResponse(Ljava/lang/Object;)Ljava/io/InputStream;
move-result-object p1
.line 4
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {v0, p1}, Lio/grpc/internal/Stream;->writeMessage(Ljava/io/InputStream;)V
.line 5
iget-object p1, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {p1}, Lio/grpc/internal/Stream;->flush()V
:try_end_20
.catch Ljava/lang/RuntimeException; {:try_start_10 .. :try_end_20} :catch_34
.catch Ljava/lang/Throwable; {:try_start_10 .. :try_end_20} :catch_21
return-void
:catch_21
move-exception p1
.line 6
invoke-static {p1}, Lio/grpc/Status;->fromThrowable(Ljava/lang/Throwable;)Lio/grpc/Status;
move-result-object v0
new-instance v1, Lio/grpc/Metadata;
invoke-direct {v1}, Lio/grpc/Metadata;-><init>()V
invoke-virtual {p0, v0, v1}, Lio/grpc/internal/ServerCallImpl;->close(Lio/grpc/Status;Lio/grpc/Metadata;)V
.line 7
new-instance v0, Ljava/lang/RuntimeException;
invoke-direct {v0, p1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
throw v0
:catch_34
move-exception p1
.line 8
invoke-static {p1}, Lio/grpc/Status;->fromThrowable(Ljava/lang/Throwable;)Lio/grpc/Status;
move-result-object v0
new-instance v1, Lio/grpc/Metadata;
invoke-direct {v1}, Lio/grpc/Metadata;-><init>()V
invoke-virtual {p0, v0, v1}, Lio/grpc/internal/ServerCallImpl;->close(Lio/grpc/Status;Lio/grpc/Metadata;)V
.line 9
throw p1
.end method
.method public setCompression(Ljava/lang/String;)V
.registers 5
.line 1
iget-boolean v0, p0, Lio/grpc/internal/ServerCallImpl;->sendHeadersCalled:Z
const/4 v1, 0x1
xor-int/2addr v0, v1
const-string v2, "sendHeaders has been called"
invoke-static {v0, v2}, Lcom/google/common/base/r;->b(ZLjava/lang/Object;)V
.line 2
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->compressorRegistry:Lio/grpc/CompressorRegistry;
invoke-virtual {v0, p1}, Lio/grpc/CompressorRegistry;->lookupCompressor(Ljava/lang/String;)Lio/grpc/Compressor;
move-result-object v0
iput-object v0, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
.line 3
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->compressor:Lio/grpc/Compressor;
const/4 v2, 0x0
if-eqz v0, :cond_18
const/4 v0, 0x1
goto :goto_19
:cond_18
const/4 v0, 0x0
:goto_19
new-array v1, v1, [Ljava/lang/Object;
aput-object p1, v1, v2
const-string p1, "Unable to find compressor by name %s"
invoke-static {v0, p1, v1}, Lcom/google/common/base/r;->a(ZLjava/lang/String;[Ljava/lang/Object;)V
return-void
.end method
.method public setMessageCompression(Z)V
.registers 3
.line 1
iget-object v0, p0, Lio/grpc/internal/ServerCallImpl;->stream:Lio/grpc/internal/ServerStream;
invoke-interface {v0, p1}, Lio/grpc/internal/Stream;->setMessageCompression(Z)V
return-void
.end method