ReplaySubject$UnboundedReplayBuffer.smali
.class final Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;
.super Ljava/util/concurrent/atomic/AtomicReference;
.source "ReplaySubject.java"
# interfaces
.implements Lio/reactivex/subjects/ReplaySubject$ReplayBuffer;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/reactivex/subjects/ReplaySubject;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x18
name = "UnboundedReplayBuffer"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/util/concurrent/atomic/AtomicReference<",
"Ljava/lang/Object;",
">;",
"Lio/reactivex/subjects/ReplaySubject$ReplayBuffer<",
"TT;>;"
}
.end annotation
# static fields
.field private static final serialVersionUID:J = -0xa2f4068c73be4b3L
# instance fields
.field final buffer:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field volatile done:Z
.field volatile size:I
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(I)V
.registers 4
.param p1, "capacityHint" # I
.line 528
.local p0, "this":Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;, "Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer<TT;>;"
invoke-direct {p0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
.line 529
new-instance v0, Ljava/util/ArrayList;
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}, Ljava/util/ArrayList;-><init>(I)V
iput-object v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->buffer:Ljava/util/List;
.line 530
return-void
.end method
# virtual methods
.method public add(Ljava/lang/Object;)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.line 534
.local p0, "this":Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;, "Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer<TT;>;"
.local p1, "value":Ljava/lang/Object;, "TT;"
iget-object v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->buffer:Ljava/util/List;
invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 535
iget v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
add-int/lit8 v0, v0, 0x1
iput v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
.line 536
return-void
.end method
.method public addFinal(Ljava/lang/Object;)V
.registers 4
.param p1, "notificationLite" # Ljava/lang/Object;
.line 540
.local p0, "this":Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;, "Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer<TT;>;"
iget-object v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->buffer:Ljava/util/List;
invoke-interface {v0, p1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 541
iget v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
const/4 v1, 0x1
add-int/2addr v0, v1
iput v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
.line 542
iput-boolean v1, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->done:Z
.line 543
return-void
.end method
.method public getValue()Ljava/lang/Object;
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"()TT;"
}
.end annotation
.line 548
.local p0, "this":Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;, "Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer<TT;>;"
iget v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
.line 549
.local v0, "s":I
const/4 v1, 0x0
if-eqz v0, :cond_26
.line 550
iget-object v2, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->buffer:Ljava/util/List;
.line 551
.local v2, "b":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Object;>;"
add-int/lit8 v3, v0, -0x1
invoke-interface {v2, v3}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v3
.line 552
.local v3, "o":Ljava/lang/Object;
invoke-static {v3}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
move-result v4
if-nez v4, :cond_1b
invoke-static {v3}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_1a
goto :goto_1b
.line 558
:cond_1a
return-object v3
.line 553
:cond_1b
:goto_1b
const/4 v4, 0x1
if-ne v0, v4, :cond_1f
.line 554
return-object v1
.line 556
:cond_1f
add-int/lit8 v1, v0, -0x2
invoke-interface {v2, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
return-object v1
.line 560
.end local v2 # "b":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Object;>;"
.end local v3 # "o":Ljava/lang/Object;
:cond_26
return-object v1
.end method
.method public getValues([Ljava/lang/Object;)[Ljava/lang/Object;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"([TT;)[TT;"
}
.end annotation
.line 566
.local p0, "this":Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;, "Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer<TT;>;"
.local p1, "array":[Ljava/lang/Object;, "[TT;"
iget v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
.line 567
.local v0, "s":I
const/4 v1, 0x0
const/4 v2, 0x0
if-nez v0, :cond_c
.line 568
array-length v3, p1
if-eqz v3, :cond_b
.line 569
aput-object v2, p1, v1
.line 571
:cond_b
return-object p1
.line 573
:cond_c
iget-object v3, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->buffer:Ljava/util/List;
.line 574
.local v3, "b":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Object;>;"
add-int/lit8 v4, v0, -0x1
invoke-interface {v3, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v4
.line 576
.local v4, "o":Ljava/lang/Object;
invoke-static {v4}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
move-result v5
if-nez v5, :cond_20
invoke-static {v4}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
move-result v5
if-eqz v5, :cond_2a
.line 577
:cond_20
add-int/lit8 v0, v0, -0x1
.line 578
if-nez v0, :cond_2a
.line 579
array-length v5, p1
if-eqz v5, :cond_29
.line 580
aput-object v2, p1, v1
.line 582
:cond_29
return-object p1
.line 587
:cond_2a
array-length v1, p1
if-ge v1, v0, :cond_3e
.line 588
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/Class;->getComponentType()Ljava/lang/Class;
move-result-object v1
invoke-static {v1, v0}, Ljava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
move-result-object v1
check-cast v1, [Ljava/lang/Object;
move-object p1, v1
check-cast p1, [Ljava/lang/Object;
.line 590
:cond_3e
const/4 v1, 0x0
.local v1, "i":I
:goto_3f
if-ge v1, v0, :cond_4a
.line 591
invoke-interface {v3, v1}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
aput-object v5, p1, v1
.line 590
add-int/lit8 v1, v1, 0x1
goto :goto_3f
.line 593
.end local v1 # "i":I
:cond_4a
array-length v1, p1
if-le v1, v0, :cond_4f
.line 594
aput-object v2, p1, v0
.line 597
:cond_4f
return-object p1
.end method
.method public replay(Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;)V
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/subjects/ReplaySubject$ReplayDisposable<",
"TT;>;)V"
}
.end annotation
.line 603
.local p0, "this":Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;, "Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer<TT;>;"
.local p1, "rs":Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;, "Lio/reactivex/subjects/ReplaySubject$ReplayDisposable<TT;>;"
invoke-virtual {p1}, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->getAndIncrement()I
move-result v0
if-eqz v0, :cond_7
.line 604
return-void
.line 607
:cond_7
const/4 v0, 0x1
.line 608
.local v0, "missed":I
iget-object v1, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->buffer:Ljava/util/List;
.line 609
.local v1, "b":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Object;>;"
iget-object v2, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->actual:Lio/reactivex/Observer;
.line 611
.local v2, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
iget-object v3, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->index:Ljava/lang/Object;
check-cast v3, Ljava/lang/Integer;
.line 613
.local v3, "indexObject":Ljava/lang/Integer;
if-eqz v3, :cond_17
.line 614
invoke-virtual {v3}, Ljava/lang/Integer;->intValue()I
move-result v4
.local v4, "index":I
goto :goto_1f
.line 616
.end local v4 # "index":I
:cond_17
const/4 v4, 0x0
.line 617
.restart local v4 # "index":I
const/4 v5, 0x0
invoke-static {v5}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v5
iput-object v5, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->index:Ljava/lang/Object;
.line 622
:goto_1f
iget-boolean v5, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->cancelled:Z
const/4 v6, 0x0
if-eqz v5, :cond_27
.line 623
iput-object v6, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->index:Ljava/lang/Object;
.line 624
return-void
.line 627
:cond_27
iget v5, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
.line 629
.local v5, "s":I
:goto_29
if-eq v5, v4, :cond_62
.line 631
iget-boolean v7, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->cancelled:Z
if-eqz v7, :cond_32
.line 632
iput-object v6, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->index:Ljava/lang/Object;
.line 633
return-void
.line 636
:cond_32
invoke-interface {v1, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v7
.line 638
.local v7, "o":Ljava/lang/Object;
iget-boolean v8, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->done:Z
if-eqz v8, :cond_5b
.line 639
add-int/lit8 v8, v4, 0x1
if-ne v8, v5, :cond_5b
.line 640
iget v5, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
.line 641
add-int/lit8 v8, v4, 0x1
if-ne v8, v5, :cond_5b
.line 642
invoke-static {v7}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_4e
.line 643
invoke-interface {v2}, Lio/reactivex/Observer;->onComplete()V
goto :goto_55
.line 645
:cond_4e
invoke-static {v7}, Lio/reactivex/internal/util/NotificationLite;->getError(Ljava/lang/Object;)Ljava/lang/Throwable;
move-result-object v8
invoke-interface {v2, v8}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
.line 647
:goto_55
iput-object v6, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->index:Ljava/lang/Object;
.line 648
const/4 v6, 0x1
iput-boolean v6, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->cancelled:Z
.line 649
return-void
.line 654
:cond_5b
invoke-interface {v2, v7}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
.line 655
nop
.end local v7 # "o":Ljava/lang/Object;
add-int/lit8 v4, v4, 0x1
.line 656
goto :goto_29
.line 658
:cond_62
iget v6, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
if-eq v4, v6, :cond_67
.line 659
goto :goto_1f
.line 662
:cond_67
invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v6
iput-object v6, p1, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->index:Ljava/lang/Object;
.line 664
neg-int v6, v0
invoke-virtual {p1, v6}, Lio/reactivex/subjects/ReplaySubject$ReplayDisposable;->addAndGet(I)I
move-result v0
.line 665
if-nez v0, :cond_76
.line 666
nop
.line 669
.end local v5 # "s":I
return-void
.line 668
:cond_76
goto :goto_1f
.end method
.method public size()I
.registers 4
.line 673
.local p0, "this":Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;, "Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer<TT;>;"
iget v0, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->size:I
.line 674
.local v0, "s":I
if-eqz v0, :cond_1d
.line 675
iget-object v1, p0, Lio/reactivex/subjects/ReplaySubject$UnboundedReplayBuffer;->buffer:Ljava/util/List;
add-int/lit8 v2, v0, -0x1
invoke-interface {v1, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v1
.line 676
.local v1, "o":Ljava/lang/Object;
invoke-static {v1}, Lio/reactivex/internal/util/NotificationLite;->isComplete(Ljava/lang/Object;)Z
move-result v2
if-nez v2, :cond_1a
invoke-static {v1}, Lio/reactivex/internal/util/NotificationLite;->isError(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_19
goto :goto_1a
.line 679
:cond_19
return v0
.line 677
:cond_1a
:goto_1a
add-int/lit8 v2, v0, -0x1
return v2
.line 681
.end local v1 # "o":Ljava/lang/Object;
:cond_1d
const/4 v1, 0x0
return v1
.end method