CallArbiter.smali
.class final Lretrofit2/adapter/rxjava/CallArbiter;
.super Ljava/util/concurrent/atomic/AtomicInteger;
.source "CallArbiter.java"
# interfaces
.implements Lrx/Subscription;
.implements Lrx/Producer;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/util/concurrent/atomic/AtomicInteger;",
"Lrx/Subscription;",
"Lrx/Producer;"
}
.end annotation
# static fields
.field private static final STATE_HAS_RESPONSE:I = 0x2
.field private static final STATE_REQUESTED:I = 0x1
.field private static final STATE_TERMINATED:I = 0x3
.field private static final STATE_WAITING:I
# instance fields
.field private final call:Lretrofit2/Call;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lretrofit2/Call<",
"TT;>;"
}
.end annotation
.end field
.field private volatile response:Lretrofit2/Response;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lretrofit2/Response<",
"TT;>;"
}
.end annotation
.end field
.field private final subscriber:Lrx/Subscriber;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lrx/Subscriber<",
"-",
"Lretrofit2/Response<",
"TT;>;>;"
}
.end annotation
.end field
.field private volatile unsubscribed:Z
# direct methods
.method constructor <init>(Lretrofit2/Call;Lrx/Subscriber;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lretrofit2/Call<",
"TT;>;",
"Lrx/Subscriber<",
"-",
"Lretrofit2/Response<",
"TT;>;>;)V"
}
.end annotation
const/4 v0, 0x0
.line 1
invoke-direct {p0, v0}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
.line 2
iput-object p1, p0, Lretrofit2/adapter/rxjava/CallArbiter;->call:Lretrofit2/Call;
.line 3
iput-object p2, p0, Lretrofit2/adapter/rxjava/CallArbiter;->subscriber:Lrx/Subscriber;
return-void
.end method
.method private deliverResponse(Lretrofit2/Response;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lretrofit2/Response<",
"TT;>;)V"
}
.end annotation
.line 1
:try_start_0
invoke-virtual {p0}, Lretrofit2/adapter/rxjava/CallArbiter;->isUnsubscribed()Z
move-result v0
if-nez v0, :cond_b
.line 2
iget-object v0, p0, Lretrofit2/adapter/rxjava/CallArbiter;->subscriber:Lrx/Subscriber;
invoke-interface {v0, p1}, Lrx/Observer;->onNext(Ljava/lang/Object;)V
:try_end_b
.catch Lrx/exceptions/OnCompletedFailedException; {:try_start_0 .. :try_end_b} :catch_75
.catch Lrx/exceptions/OnErrorFailedException; {:try_start_0 .. :try_end_b} :catch_73
.catch Lrx/exceptions/OnErrorNotImplementedException; {:try_start_0 .. :try_end_b} :catch_71
.catch Ljava/lang/Throwable; {:try_start_0 .. :try_end_b} :catch_38
.line 3
:cond_b
:try_start_b
invoke-virtual {p0}, Lretrofit2/adapter/rxjava/CallArbiter;->isUnsubscribed()Z
move-result p1
if-nez p1, :cond_37
.line 4
iget-object p1, p0, Lretrofit2/adapter/rxjava/CallArbiter;->subscriber:Lrx/Subscriber;
invoke-interface {p1}, Lrx/Observer;->onCompleted()V
:try_end_16
.catch Lrx/exceptions/OnCompletedFailedException; {:try_start_b .. :try_end_16} :catch_2b
.catch Lrx/exceptions/OnErrorFailedException; {:try_start_b .. :try_end_16} :catch_29
.catch Lrx/exceptions/OnErrorNotImplementedException; {:try_start_b .. :try_end_16} :catch_27
.catch Ljava/lang/Throwable; {:try_start_b .. :try_end_16} :catch_17
goto :goto_37
:catch_17
move-exception p1
.line 5
invoke-static {p1}, Lrx/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 6
invoke-static {}, Lrx/plugins/RxJavaPlugins;->getInstance()Lrx/plugins/RxJavaPlugins;
move-result-object v0
invoke-virtual {v0}, Lrx/plugins/RxJavaPlugins;->getErrorHandler()Lrx/plugins/RxJavaErrorHandler;
move-result-object v0
invoke-virtual {v0, p1}, Lrx/plugins/RxJavaErrorHandler;->handleError(Ljava/lang/Throwable;)V
goto :goto_37
:catch_27
move-exception p1
goto :goto_2c
:catch_29
move-exception p1
goto :goto_2c
:catch_2b
move-exception p1
.line 7
:goto_2c
invoke-static {}, Lrx/plugins/RxJavaPlugins;->getInstance()Lrx/plugins/RxJavaPlugins;
move-result-object v0
invoke-virtual {v0}, Lrx/plugins/RxJavaPlugins;->getErrorHandler()Lrx/plugins/RxJavaErrorHandler;
move-result-object v0
invoke-virtual {v0, p1}, Lrx/plugins/RxJavaErrorHandler;->handleError(Ljava/lang/Throwable;)V
:cond_37
:goto_37
return-void
:catch_38
move-exception p1
.line 8
invoke-static {p1}, Lrx/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 9
:try_start_3c
iget-object v0, p0, Lretrofit2/adapter/rxjava/CallArbiter;->subscriber:Lrx/Subscriber;
invoke-interface {v0, p1}, Lrx/Observer;->onError(Ljava/lang/Throwable;)V
:try_end_41
.catch Lrx/exceptions/OnCompletedFailedException; {:try_start_3c .. :try_end_41} :catch_64
.catch Lrx/exceptions/OnErrorFailedException; {:try_start_3c .. :try_end_41} :catch_62
.catch Lrx/exceptions/OnErrorNotImplementedException; {:try_start_3c .. :try_end_41} :catch_60
.catch Ljava/lang/Throwable; {:try_start_3c .. :try_end_41} :catch_42
goto :goto_70
:catch_42
move-exception v0
.line 10
invoke-static {v0}, Lrx/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 11
new-instance v1, Lrx/exceptions/CompositeException;
const/4 v2, 0x2
new-array v2, v2, [Ljava/lang/Throwable;
const/4 v3, 0x0
aput-object p1, v2, v3
const/4 p1, 0x1
aput-object v0, v2, p1
invoke-direct {v1, v2}, Lrx/exceptions/CompositeException;-><init>([Ljava/lang/Throwable;)V
.line 12
invoke-static {}, Lrx/plugins/RxJavaPlugins;->getInstance()Lrx/plugins/RxJavaPlugins;
move-result-object p1
invoke-virtual {p1}, Lrx/plugins/RxJavaPlugins;->getErrorHandler()Lrx/plugins/RxJavaErrorHandler;
move-result-object p1
invoke-virtual {p1, v1}, Lrx/plugins/RxJavaErrorHandler;->handleError(Ljava/lang/Throwable;)V
goto :goto_70
:catch_60
move-exception p1
goto :goto_65
:catch_62
move-exception p1
goto :goto_65
:catch_64
move-exception p1
.line 13
:goto_65
invoke-static {}, Lrx/plugins/RxJavaPlugins;->getInstance()Lrx/plugins/RxJavaPlugins;
move-result-object v0
invoke-virtual {v0}, Lrx/plugins/RxJavaPlugins;->getErrorHandler()Lrx/plugins/RxJavaErrorHandler;
move-result-object v0
invoke-virtual {v0, p1}, Lrx/plugins/RxJavaErrorHandler;->handleError(Ljava/lang/Throwable;)V
:goto_70
return-void
:catch_71
move-exception p1
goto :goto_76
:catch_73
move-exception p1
goto :goto_76
:catch_75
move-exception p1
.line 14
:goto_76
invoke-static {}, Lrx/plugins/RxJavaPlugins;->getInstance()Lrx/plugins/RxJavaPlugins;
move-result-object v0
invoke-virtual {v0}, Lrx/plugins/RxJavaPlugins;->getErrorHandler()Lrx/plugins/RxJavaErrorHandler;
move-result-object v0
invoke-virtual {v0, p1}, Lrx/plugins/RxJavaErrorHandler;->handleError(Ljava/lang/Throwable;)V
return-void
.end method
# virtual methods
.method emitError(Ljava/lang/Throwable;)V
.registers 6
const/4 v0, 0x3
.line 1
invoke-virtual {p0, v0}, Ljava/util/concurrent/atomic/AtomicInteger;->set(I)V
.line 2
invoke-virtual {p0}, Lretrofit2/adapter/rxjava/CallArbiter;->isUnsubscribed()Z
move-result v0
if-nez v0, :cond_3e
.line 3
:try_start_a
iget-object v0, p0, Lretrofit2/adapter/rxjava/CallArbiter;->subscriber:Lrx/Subscriber;
invoke-interface {v0, p1}, Lrx/Observer;->onError(Ljava/lang/Throwable;)V
:try_end_f
.catch Lrx/exceptions/OnCompletedFailedException; {:try_start_a .. :try_end_f} :catch_32
.catch Lrx/exceptions/OnErrorFailedException; {:try_start_a .. :try_end_f} :catch_30
.catch Lrx/exceptions/OnErrorNotImplementedException; {:try_start_a .. :try_end_f} :catch_2e
.catch Ljava/lang/Throwable; {:try_start_a .. :try_end_f} :catch_10
goto :goto_3e
:catch_10
move-exception v0
.line 4
invoke-static {v0}, Lrx/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 5
new-instance v1, Lrx/exceptions/CompositeException;
const/4 v2, 0x2
new-array v2, v2, [Ljava/lang/Throwable;
const/4 v3, 0x0
aput-object p1, v2, v3
const/4 p1, 0x1
aput-object v0, v2, p1
invoke-direct {v1, v2}, Lrx/exceptions/CompositeException;-><init>([Ljava/lang/Throwable;)V
.line 6
invoke-static {}, Lrx/plugins/RxJavaPlugins;->getInstance()Lrx/plugins/RxJavaPlugins;
move-result-object p1
invoke-virtual {p1}, Lrx/plugins/RxJavaPlugins;->getErrorHandler()Lrx/plugins/RxJavaErrorHandler;
move-result-object p1
invoke-virtual {p1, v1}, Lrx/plugins/RxJavaErrorHandler;->handleError(Ljava/lang/Throwable;)V
goto :goto_3e
:catch_2e
move-exception p1
goto :goto_33
:catch_30
move-exception p1
goto :goto_33
:catch_32
move-exception p1
.line 7
:goto_33
invoke-static {}, Lrx/plugins/RxJavaPlugins;->getInstance()Lrx/plugins/RxJavaPlugins;
move-result-object v0
invoke-virtual {v0}, Lrx/plugins/RxJavaPlugins;->getErrorHandler()Lrx/plugins/RxJavaErrorHandler;
move-result-object v0
invoke-virtual {v0, p1}, Lrx/plugins/RxJavaErrorHandler;->handleError(Ljava/lang/Throwable;)V
:cond_3e
:goto_3e
return-void
.end method
.method emitResponse(Lretrofit2/Response;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lretrofit2/Response<",
"TT;>;)V"
}
.end annotation
.line 1
:cond_0
invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result v0
const/4 v1, 0x2
if-eqz v0, :cond_36
const/4 v2, 0x3
const/4 v3, 0x1
if-eq v0, v3, :cond_2c
if-eq v0, v1, :cond_26
if-eq v0, v2, :cond_26
.line 2
new-instance p1, Ljava/lang/IllegalStateException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Unknown state: "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
invoke-direct {p1, v0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw p1
.line 3
:cond_26
new-instance p1, Ljava/lang/AssertionError;
invoke-direct {p1}, Ljava/lang/AssertionError;-><init>()V
throw p1
.line 4
:cond_2c
invoke-virtual {p0, v3, v2}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result v0
if-eqz v0, :cond_0
.line 5
invoke-direct {p0, p1}, Lretrofit2/adapter/rxjava/CallArbiter;->deliverResponse(Lretrofit2/Response;)V
return-void
.line 6
:cond_36
iput-object p1, p0, Lretrofit2/adapter/rxjava/CallArbiter;->response:Lretrofit2/Response;
const/4 v0, 0x0
.line 7
invoke-virtual {p0, v0, v1}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result v0
if-eqz v0, :cond_0
return-void
.end method
.method public isUnsubscribed()Z
.registers 2
.line 1
iget-boolean v0, p0, Lretrofit2/adapter/rxjava/CallArbiter;->unsubscribed:Z
return v0
.end method
.method public request(J)V
.registers 6
const-wide/16 v0, 0x0
cmp-long v2, p1, v0
if-nez v2, :cond_7
return-void
.line 1
:cond_7
invoke-virtual {p0}, Ljava/util/concurrent/atomic/AtomicInteger;->get()I
move-result p1
const/4 p2, 0x1
if-eqz p1, :cond_3a
if-eq p1, p2, :cond_39
const/4 p2, 0x3
const/4 v0, 0x2
if-eq p1, v0, :cond_2e
if-ne p1, p2, :cond_17
goto :goto_39
.line 2
:cond_17
new-instance p2, Ljava/lang/IllegalStateException;
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
const-string v1, "Unknown state: "
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
invoke-direct {p2, p1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw p2
.line 3
:cond_2e
invoke-virtual {p0, v0, p2}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result p1
if-eqz p1, :cond_7
.line 4
iget-object p1, p0, Lretrofit2/adapter/rxjava/CallArbiter;->response:Lretrofit2/Response;
invoke-direct {p0, p1}, Lretrofit2/adapter/rxjava/CallArbiter;->deliverResponse(Lretrofit2/Response;)V
:cond_39
:goto_39
return-void
:cond_3a
const/4 p1, 0x0
.line 5
invoke-virtual {p0, p1, p2}, Ljava/util/concurrent/atomic/AtomicInteger;->compareAndSet(II)Z
move-result p1
if-eqz p1, :cond_7
return-void
.end method
.method public unsubscribe()V
.registers 2
const/4 v0, 0x1
.line 1
iput-boolean v0, p0, Lretrofit2/adapter/rxjava/CallArbiter;->unsubscribed:Z
.line 2
iget-object v0, p0, Lretrofit2/adapter/rxjava/CallArbiter;->call:Lretrofit2/Call;
invoke-interface {v0}, Lretrofit2/Call;->cancel()V
return-void
.end method