UnicastSubject.smali
.class public final Lio/reactivex/subjects/UnicastSubject;
.super Lio/reactivex/subjects/Subject;
.source "UnicastSubject.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lio/reactivex/subjects/UnicastSubject$UnicastQueueDisposable;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Lio/reactivex/subjects/Subject<",
"TT;>;"
}
.end annotation
# instance fields
.field final actual:Ljava/util/concurrent/atomic/AtomicReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/atomic/AtomicReference<",
"Lio/reactivex/Observer<",
"-TT;>;>;"
}
.end annotation
.end field
.field final delayError:Z
.field volatile disposed:Z
.field volatile done:Z
.field enableOperatorFusion:Z
.field error:Ljava/lang/Throwable;
.field final onTerminate:Ljava/util/concurrent/atomic/AtomicReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/atomic/AtomicReference<",
"Ljava/lang/Runnable;",
">;"
}
.end annotation
.end field
.field final once:Ljava/util/concurrent/atomic/AtomicBoolean;
.field final queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/internal/queue/SpscLinkedArrayQueue<",
"TT;>;"
}
.end annotation
.end field
.field final wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/internal/observers/BasicIntQueueDisposable<",
"TT;>;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(ILjava/lang/Runnable;)V
.registers 4
.param p1, "capacityHint" # I
.param p2, "onTerminate" # Ljava/lang/Runnable;
.line 179
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
const/4 v0, 0x1
invoke-direct {p0, p1, p2, v0}, Lio/reactivex/subjects/UnicastSubject;-><init>(ILjava/lang/Runnable;Z)V
.line 180
return-void
.end method
.method constructor <init>(ILjava/lang/Runnable;Z)V
.registers 6
.param p1, "capacityHint" # I
.param p2, "onTerminate" # Ljava/lang/Runnable;
.param p3, "delayError" # Z
.line 190
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
invoke-direct {p0}, Lio/reactivex/subjects/Subject;-><init>()V
.line 191
new-instance v0, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
const-string v1, "capacityHint"
invoke-static {p1, v1}, Lio/reactivex/internal/functions/ObjectHelper;->verifyPositive(ILjava/lang/String;)I
move-result v1
invoke-direct {v0, v1}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;-><init>(I)V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.line 192
new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
const-string v1, "onTerminate"
invoke-static {p2, v1}, Lio/reactivex/internal/functions/ObjectHelper;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
move-result-object v1
invoke-direct {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;-><init>(Ljava/lang/Object;)V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->onTerminate:Ljava/util/concurrent/atomic/AtomicReference;
.line 193
iput-boolean p3, p0, Lio/reactivex/subjects/UnicastSubject;->delayError:Z
.line 194
new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
.line 195
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 196
new-instance v0, Lio/reactivex/subjects/UnicastSubject$UnicastQueueDisposable;
invoke-direct {v0, p0}, Lio/reactivex/subjects/UnicastSubject$UnicastQueueDisposable;-><init>(Lio/reactivex/subjects/UnicastSubject;)V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
.line 197
return-void
.end method
.method constructor <init>(IZ)V
.registers 5
.param p1, "capacityHint" # I
.param p2, "delayError" # Z
.line 161
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
invoke-direct {p0}, Lio/reactivex/subjects/Subject;-><init>()V
.line 162
new-instance v0, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
const-string v1, "capacityHint"
invoke-static {p1, v1}, Lio/reactivex/internal/functions/ObjectHelper;->verifyPositive(ILjava/lang/String;)I
move-result v1
invoke-direct {v0, v1}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;-><init>(I)V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.line 163
new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->onTerminate:Ljava/util/concurrent/atomic/AtomicReference;
.line 164
iput-boolean p2, p0, Lio/reactivex/subjects/UnicastSubject;->delayError:Z
.line 165
new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
.line 166
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 167
new-instance v0, Lio/reactivex/subjects/UnicastSubject$UnicastQueueDisposable;
invoke-direct {v0, p0}, Lio/reactivex/subjects/UnicastSubject$UnicastQueueDisposable;-><init>(Lio/reactivex/subjects/UnicastSubject;)V
iput-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
.line 168
return-void
.end method
.method public static create()Lio/reactivex/subjects/UnicastSubject;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">()",
"Lio/reactivex/subjects/UnicastSubject<",
"TT;>;"
}
.end annotation
.annotation runtime Lio/reactivex/annotations/CheckReturnValue;
.end annotation
.line 86
new-instance v0, Lio/reactivex/subjects/UnicastSubject;
invoke-static {}, Lio/reactivex/subjects/UnicastSubject;->bufferSize()I
move-result v1
const/4 v2, 0x1
invoke-direct {v0, v1, v2}, Lio/reactivex/subjects/UnicastSubject;-><init>(IZ)V
return-object v0
.end method
.method public static create(I)Lio/reactivex/subjects/UnicastSubject;
.registers 3
.param p0, "capacityHint" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(I)",
"Lio/reactivex/subjects/UnicastSubject<",
"TT;>;"
}
.end annotation
.annotation runtime Lio/reactivex/annotations/CheckReturnValue;
.end annotation
.line 97
new-instance v0, Lio/reactivex/subjects/UnicastSubject;
const/4 v1, 0x1
invoke-direct {v0, p0, v1}, Lio/reactivex/subjects/UnicastSubject;-><init>(IZ)V
return-object v0
.end method
.method public static create(ILjava/lang/Runnable;)Lio/reactivex/subjects/UnicastSubject;
.registers 4
.param p0, "capacityHint" # I
.param p1, "onTerminate" # Ljava/lang/Runnable;
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(I",
"Ljava/lang/Runnable;",
")",
"Lio/reactivex/subjects/UnicastSubject<",
"TT;>;"
}
.end annotation
.annotation runtime Lio/reactivex/annotations/CheckReturnValue;
.end annotation
.line 114
new-instance v0, Lio/reactivex/subjects/UnicastSubject;
const/4 v1, 0x1
invoke-direct {v0, p0, p1, v1}, Lio/reactivex/subjects/UnicastSubject;-><init>(ILjava/lang/Runnable;Z)V
return-object v0
.end method
.method public static create(ILjava/lang/Runnable;Z)Lio/reactivex/subjects/UnicastSubject;
.registers 4
.param p0, "capacityHint" # I
.param p1, "onTerminate" # Ljava/lang/Runnable;
.param p2, "delayError" # Z
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(I",
"Ljava/lang/Runnable;",
"Z)",
"Lio/reactivex/subjects/UnicastSubject<",
"TT;>;"
}
.end annotation
.annotation runtime Lio/reactivex/annotations/CheckReturnValue;
.end annotation
.line 134
new-instance v0, Lio/reactivex/subjects/UnicastSubject;
invoke-direct {v0, p0, p1, p2}, Lio/reactivex/subjects/UnicastSubject;-><init>(ILjava/lang/Runnable;Z)V
return-object v0
.end method
.method public static create(Z)Lio/reactivex/subjects/UnicastSubject;
.registers 3
.param p0, "delayError" # Z
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">(Z)",
"Lio/reactivex/subjects/UnicastSubject<",
"TT;>;"
}
.end annotation
.annotation runtime Lio/reactivex/annotations/CheckReturnValue;
.end annotation
.line 151
new-instance v0, Lio/reactivex/subjects/UnicastSubject;
invoke-static {}, Lio/reactivex/subjects/UnicastSubject;->bufferSize()I
move-result v1
invoke-direct {v0, v1, p0}, Lio/reactivex/subjects/UnicastSubject;-><init>(IZ)V
return-object v0
.end method
# virtual methods
.method doTerminate()V
.registers 4
.line 215
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->onTerminate:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Runnable;
.line 216
.local v0, "r":Ljava/lang/Runnable;
if-eqz v0, :cond_16
iget-object v1, p0, Lio/reactivex/subjects/UnicastSubject;->onTerminate:Ljava/util/concurrent/atomic/AtomicReference;
const/4 v2, 0x0
invoke-virtual {v1, v0, v2}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_16
.line 217
invoke-interface {v0}, Ljava/lang/Runnable;->run()V
.line 219
:cond_16
return-void
.end method
.method drain()V
.registers 5
.line 375
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
invoke-virtual {v0}, Lio/reactivex/internal/observers/BasicIntQueueDisposable;->getAndIncrement()I
move-result v0
if-eqz v0, :cond_9
.line 376
return-void
.line 379
:cond_9
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lio/reactivex/Observer;
.line 380
.local v0, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
const/4 v1, 0x1
.line 384
.local v1, "missed":I
:goto_12
if-eqz v0, :cond_20
.line 385
iget-boolean v2, p0, Lio/reactivex/subjects/UnicastSubject;->enableOperatorFusion:Z
if-eqz v2, :cond_1c
.line 386
invoke-virtual {p0, v0}, Lio/reactivex/subjects/UnicastSubject;->drainFused(Lio/reactivex/Observer;)V
goto :goto_1f
.line 388
:cond_1c
invoke-virtual {p0, v0}, Lio/reactivex/subjects/UnicastSubject;->drainNormal(Lio/reactivex/Observer;)V
.line 390
:goto_1f
return-void
.line 393
:cond_20
iget-object v2, p0, Lio/reactivex/subjects/UnicastSubject;->wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
neg-int v3, v1
invoke-virtual {v2, v3}, Lio/reactivex/internal/observers/BasicIntQueueDisposable;->addAndGet(I)I
move-result v1
.line 394
if-nez v1, :cond_2b
.line 395
nop
.line 400
return-void
.line 398
:cond_2b
iget-object v2, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v2
move-object v0, v2
check-cast v0, Lio/reactivex/Observer;
goto :goto_12
.end method
.method drainFused(Lio/reactivex/Observer;)V
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/Observer<",
"-TT;>;)V"
}
.end annotation
.line 318
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
.local p1, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
const/4 v0, 0x1
.line 320
.local v0, "missed":I
iget-object v1, p0, Lio/reactivex/subjects/UnicastSubject;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.line 321
.local v1, "q":Lio/reactivex/internal/queue/SpscLinkedArrayQueue;, "Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;"
iget-boolean v2, p0, Lio/reactivex/subjects/UnicastSubject;->delayError:Z
xor-int/lit8 v2, v2, 0x1
.line 325
.local v2, "failFast":Z
:goto_7
iget-boolean v3, p0, Lio/reactivex/subjects/UnicastSubject;->disposed:Z
const/4 v4, 0x0
if-eqz v3, :cond_15
.line 326
iget-object v3, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v3, v4}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 327
invoke-virtual {v1}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;->clear()V
.line 328
return-void
.line 330
:cond_15
iget-boolean v3, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
.line 332
.local v3, "d":Z
if-eqz v2, :cond_22
if-eqz v3, :cond_22
.line 333
invoke-virtual {p0, v1, p1}, Lio/reactivex/subjects/UnicastSubject;->failedFast(Lio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/Observer;)Z
move-result v5
if-eqz v5, :cond_22
.line 334
return-void
.line 338
:cond_22
invoke-interface {p1, v4}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
.line 340
if-eqz v3, :cond_2b
.line 341
invoke-virtual {p0, p1}, Lio/reactivex/subjects/UnicastSubject;->errorOrComplete(Lio/reactivex/Observer;)V
.line 342
return-void
.line 345
:cond_2b
iget-object v4, p0, Lio/reactivex/subjects/UnicastSubject;->wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
neg-int v5, v0
invoke-virtual {v4, v5}, Lio/reactivex/internal/observers/BasicIntQueueDisposable;->addAndGet(I)I
move-result v0
.line 346
if-nez v0, :cond_36
.line 347
nop
.line 350
.end local v3 # "d":Z
return-void
.line 349
:cond_36
goto :goto_7
.end method
.method drainNormal(Lio/reactivex/Observer;)V
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/Observer<",
"-TT;>;)V"
}
.end annotation
.line 271
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
.local p1, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
const/4 v0, 0x1
.line 272
.local v0, "missed":I
iget-object v1, p0, Lio/reactivex/subjects/UnicastSubject;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.line 273
.local v1, "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TT;>;"
iget-boolean v2, p0, Lio/reactivex/subjects/UnicastSubject;->delayError:Z
const/4 v3, 0x1
xor-int/2addr v2, v3
.line 274
.local v2, "failFast":Z
const/4 v4, 0x1
.line 278
.local v4, "canBeError":Z
:cond_8
:goto_8
iget-boolean v5, p0, Lio/reactivex/subjects/UnicastSubject;->disposed:Z
if-eqz v5, :cond_16
.line 279
iget-object v3, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
const/4 v5, 0x0
invoke-virtual {v3, v5}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 280
invoke-interface {v1}, Lio/reactivex/internal/fuseable/SimpleQueue;->clear()V
.line 281
return-void
.line 284
:cond_16
iget-boolean v5, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
.line 285
.local v5, "d":Z
iget-object v6, p0, Lio/reactivex/subjects/UnicastSubject;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
invoke-virtual {v6}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;->poll()Ljava/lang/Object;
move-result-object v6
.line 286
.local v6, "v":Ljava/lang/Object;, "TT;"
if-nez v6, :cond_22
const/4 v7, 0x1
goto :goto_23
:cond_22
const/4 v7, 0x0
.line 288
.local v7, "empty":Z
:goto_23
if-eqz v5, :cond_37
.line 289
if-eqz v2, :cond_31
if-eqz v4, :cond_31
.line 290
invoke-virtual {p0, v1, p1}, Lio/reactivex/subjects/UnicastSubject;->failedFast(Lio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/Observer;)Z
move-result v8
if-eqz v8, :cond_30
.line 291
return-void
.line 293
:cond_30
const/4 v4, 0x0
.line 297
:cond_31
if-eqz v7, :cond_37
.line 298
invoke-virtual {p0, p1}, Lio/reactivex/subjects/UnicastSubject;->errorOrComplete(Lio/reactivex/Observer;)V
.line 299
return-void
.line 303
:cond_37
if-eqz v7, :cond_45
.line 304
nop
.line 310
.end local v5 # "d":Z
.end local v6 # "v":Ljava/lang/Object;, "TT;"
.end local v7 # "empty":Z
iget-object v5, p0, Lio/reactivex/subjects/UnicastSubject;->wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
neg-int v6, v0
invoke-virtual {v5, v6}, Lio/reactivex/internal/observers/BasicIntQueueDisposable;->addAndGet(I)I
move-result v0
.line 311
if-nez v0, :cond_8
.line 312
nop
.line 315
return-void
.line 307
.restart local v5 # "d":Z
.restart local v6 # "v":Ljava/lang/Object;, "TT;"
.restart local v7 # "empty":Z
:cond_45
invoke-interface {p1, v6}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
.line 308
.end local v5 # "d":Z
.end local v6 # "v":Ljava/lang/Object;, "TT;"
.end local v7 # "empty":Z
goto :goto_8
.end method
.method errorOrComplete(Lio/reactivex/Observer;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/Observer<",
"-TT;>;)V"
}
.end annotation
.line 353
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
.local p1, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 354
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->error:Ljava/lang/Throwable;
.line 355
.local v0, "ex":Ljava/lang/Throwable;
if-eqz v0, :cond_e
.line 356
invoke-interface {p1, v0}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
goto :goto_11
.line 358
:cond_e
invoke-interface {p1}, Lio/reactivex/Observer;->onComplete()V
.line 360
:goto_11
return-void
.end method
.method failedFast(Lio/reactivex/internal/fuseable/SimpleQueue;Lio/reactivex/Observer;)Z
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/internal/fuseable/SimpleQueue<",
"TT;>;",
"Lio/reactivex/Observer<",
"-TT;>;)Z"
}
.end annotation
.line 363
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
.local p1, "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TT;>;"
.local p2, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->error:Ljava/lang/Throwable;
.line 364
.local v0, "ex":Ljava/lang/Throwable;
if-eqz v0, :cond_12
.line 365
iget-object v1, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
const/4 v2, 0x0
invoke-virtual {v1, v2}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 366
invoke-interface {p1}, Lio/reactivex/internal/fuseable/SimpleQueue;->clear()V
.line 367
invoke-interface {p2, v0}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
.line 368
const/4 v1, 0x1
return v1
.line 370
:cond_12
const/4 v1, 0x0
return v1
.end method
.method public getThrowable()Ljava/lang/Throwable;
.registers 2
.line 409
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
if-eqz v0, :cond_7
.line 410
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->error:Ljava/lang/Throwable;
return-object v0
.line 412
:cond_7
const/4 v0, 0x0
return-object v0
.end method
.method public hasComplete()Z
.registers 2
.line 422
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
if-eqz v0, :cond_a
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->error:Ljava/lang/Throwable;
if-nez v0, :cond_a
const/4 v0, 0x1
goto :goto_b
:cond_a
const/4 v0, 0x0
:goto_b
return v0
.end method
.method public hasObservers()Z
.registers 2
.line 404
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
if-eqz v0, :cond_a
const/4 v0, 0x1
goto :goto_b
:cond_a
const/4 v0, 0x0
:goto_b
return v0
.end method
.method public hasThrowable()Z
.registers 2
.line 417
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
if-eqz v0, :cond_a
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->error:Ljava/lang/Throwable;
if-eqz v0, :cond_a
const/4 v0, 0x1
goto :goto_b
:cond_a
const/4 v0, 0x0
:goto_b
return v0
.end method
.method public onComplete()V
.registers 2
.line 260
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
if-nez v0, :cond_13
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->disposed:Z
if-eqz v0, :cond_9
goto :goto_13
.line 263
:cond_9
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
.line 265
invoke-virtual {p0}, Lio/reactivex/subjects/UnicastSubject;->doTerminate()V
.line 267
invoke-virtual {p0}, Lio/reactivex/subjects/UnicastSubject;->drain()V
.line 268
return-void
.line 261
:cond_13
:goto_13
return-void
.end method
.method public onError(Ljava/lang/Throwable;)V
.registers 4
.param p1, "t" # Ljava/lang/Throwable;
.line 243
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
if-nez v0, :cond_1f
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->disposed:Z
if-eqz v0, :cond_9
goto :goto_1f
.line 247
:cond_9
if-nez p1, :cond_13
.line 248
new-instance v0, Ljava/lang/NullPointerException;
const-string v1, "onError called with null. Null values are generally not allowed in 2.x operators and sources."
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
move-object p1, v0
.line 250
:cond_13
iput-object p1, p0, Lio/reactivex/subjects/UnicastSubject;->error:Ljava/lang/Throwable;
.line 251
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
.line 253
invoke-virtual {p0}, Lio/reactivex/subjects/UnicastSubject;->doTerminate()V
.line 255
invoke-virtual {p0}, Lio/reactivex/subjects/UnicastSubject;->drain()V
.line 256
return-void
.line 244
:cond_1f
:goto_1f
invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
.line 245
return-void
.end method
.method public onNext(Ljava/lang/Object;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.line 230
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
.local p1, "t":Ljava/lang/Object;, "TT;"
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
if-nez v0, :cond_1f
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->disposed:Z
if-eqz v0, :cond_9
goto :goto_1f
.line 233
:cond_9
if-nez p1, :cond_16
.line 234
new-instance v0, Ljava/lang/NullPointerException;
const-string v1, "onNext called with null. Null values are generally not allowed in 2.x operators and sources."
invoke-direct {v0, v1}, Ljava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
invoke-virtual {p0, v0}, Lio/reactivex/subjects/UnicastSubject;->onError(Ljava/lang/Throwable;)V
.line 235
return-void
.line 237
:cond_16
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
invoke-virtual {v0, p1}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;->offer(Ljava/lang/Object;)Z
.line 238
invoke-virtual {p0}, Lio/reactivex/subjects/UnicastSubject;->drain()V
.line 239
return-void
.line 231
:cond_1f
:goto_1f
return-void
.end method
.method public onSubscribe(Lio/reactivex/disposables/Disposable;)V
.registers 3
.param p1, "s" # Lio/reactivex/disposables/Disposable;
.line 223
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->done:Z
if-nez v0, :cond_8
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->disposed:Z
if-eqz v0, :cond_b
.line 224
:cond_8
invoke-interface {p1}, Lio/reactivex/disposables/Disposable;->dispose()V
.line 226
:cond_b
return-void
.end method
.method protected subscribeActual(Lio/reactivex/Observer;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/Observer<",
"-TT;>;)V"
}
.end annotation
.line 201
.local p0, "this":Lio/reactivex/subjects/UnicastSubject;, "Lio/reactivex/subjects/UnicastSubject<TT;>;"
.local p1, "observer":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-nez v0, :cond_2b
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
const/4 v1, 0x0
const/4 v2, 0x1
invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
move-result v0
if-eqz v0, :cond_2b
.line 202
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->wip:Lio/reactivex/internal/observers/BasicIntQueueDisposable;
invoke-interface {p1, v0}, Lio/reactivex/Observer;->onSubscribe(Lio/reactivex/disposables/Disposable;)V
.line 203
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0, p1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 204
iget-boolean v0, p0, Lio/reactivex/subjects/UnicastSubject;->disposed:Z
if-eqz v0, :cond_27
.line 205
iget-object v0, p0, Lio/reactivex/subjects/UnicastSubject;->actual:Ljava/util/concurrent/atomic/AtomicReference;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 206
return-void
.line 208
:cond_27
invoke-virtual {p0}, Lio/reactivex/subjects/UnicastSubject;->drain()V
goto :goto_35
.line 210
:cond_2b
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Only a single observer allowed."
invoke-direct {v0, v1}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
invoke-static {v0, p1}, Lio/reactivex/internal/disposables/EmptyDisposable;->error(Ljava/lang/Throwable;Lio/reactivex/Observer;)V
.line 212
:goto_35
return-void
.end method