BlockingBaseSubscriber.smali
.class public abstract Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;
.super Ljava/util/concurrent/CountDownLatch;
.source "BlockingBaseSubscriber.java"
# interfaces
.implements Lio/reactivex/FlowableSubscriber;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/util/concurrent/CountDownLatch;",
"Lio/reactivex/FlowableSubscriber<",
"TT;>;"
}
.end annotation
# instance fields
.field volatile cancelled:Z
.field error:Ljava/lang/Throwable;
.field s:Lorg/reactivestreams/Subscription;
.field value:Ljava/lang/Object;
.annotation system Ldalvik/annotation/Signature;
value = {
"TT;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 34
.local p0, "this":Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;, "Lio/reactivex/internal/subscribers/BlockingBaseSubscriber<TT;>;"
const/4 v0, 0x1
invoke-direct {p0, v0}, Ljava/util/concurrent/CountDownLatch;-><init>(I)V
.line 35
return-void
.end method
# virtual methods
.method public final blockingGet()Ljava/lang/Object;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
.line 62
.local p0, "this":Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;, "Lio/reactivex/internal/subscribers/BlockingBaseSubscriber<TT;>;"
invoke-virtual {p0}, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->getCount()J
move-result-wide v0
const-wide/16 v2, 0x0
cmp-long v4, v0, v2
if-eqz v4, :cond_22
.line 64
:try_start_a
invoke-static {}, Lio/reactivex/internal/util/BlockingHelper;->verifyNonBlocking()V
.line 65
invoke-virtual {p0}, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->await()V
:try_end_10
.catch Ljava/lang/InterruptedException; {:try_start_a .. :try_end_10} :catch_11
.line 73
goto :goto_22
.line 66
:catch_11
move-exception v0
.line 67
.local v0, "ex":Ljava/lang/InterruptedException;
iget-object v1, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->s:Lorg/reactivestreams/Subscription;
.line 68
.local v1, "s":Lorg/reactivestreams/Subscription;
sget-object v2, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->CANCELLED:Lio/reactivex/internal/subscriptions/SubscriptionHelper;
iput-object v2, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->s:Lorg/reactivestreams/Subscription;
.line 69
if-eqz v1, :cond_1d
.line 70
invoke-interface {v1}, Lorg/reactivestreams/Subscription;->cancel()V
.line 72
:cond_1d
invoke-static {v0}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
move-result-object v2
throw v2
.line 76
.end local v0 # "ex":Ljava/lang/InterruptedException;
.end local v1 # "s":Lorg/reactivestreams/Subscription;
:cond_22
:goto_22
iget-object v0, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->error:Ljava/lang/Throwable;
.line 77
.local v0, "e":Ljava/lang/Throwable;
if-nez v0, :cond_29
.line 80
iget-object v1, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->value:Ljava/lang/Object;
return-object v1
.line 78
:cond_29
invoke-static {v0}, Lio/reactivex/internal/util/ExceptionHelper;->wrapOrThrow(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
move-result-object v1
throw v1
.end method
.method public final onComplete()V
.registers 1
.line 53
.local p0, "this":Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;, "Lio/reactivex/internal/subscribers/BlockingBaseSubscriber<TT;>;"
invoke-virtual {p0}, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->countDown()V
.line 54
return-void
.end method
.method public final onSubscribe(Lorg/reactivestreams/Subscription;)V
.registers 4
.param p1, "s" # Lorg/reactivestreams/Subscription;
.line 39
.local p0, "this":Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;, "Lio/reactivex/internal/subscribers/BlockingBaseSubscriber<TT;>;"
iget-object v0, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->s:Lorg/reactivestreams/Subscription;
invoke-static {v0, p1}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->validate(Lorg/reactivestreams/Subscription;Lorg/reactivestreams/Subscription;)Z
move-result v0
if-eqz v0, :cond_21
.line 40
iput-object p1, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->s:Lorg/reactivestreams/Subscription;
.line 41
iget-boolean v0, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->cancelled:Z
if-nez v0, :cond_21
.line 42
const-wide v0, 0x7fffffffffffffffL
invoke-interface {p1, v0, v1}, Lorg/reactivestreams/Subscription;->request(J)V
.line 43
iget-boolean v0, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->cancelled:Z
if-eqz v0, :cond_21
.line 44
sget-object v0, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->CANCELLED:Lio/reactivex/internal/subscriptions/SubscriptionHelper;
iput-object v0, p0, Lio/reactivex/internal/subscribers/BlockingBaseSubscriber;->s:Lorg/reactivestreams/Subscription;
.line 45
invoke-interface {p1}, Lorg/reactivestreams/Subscription;->cancel()V
.line 49
:cond_21
return-void
.end method