ObservableTakeLastTimed$TakeLastTimedObserver.smali
.class final Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;
.super Ljava/util/concurrent/atomic/AtomicBoolean;
.source "ObservableTakeLastTimed.java"
# interfaces
.implements Lio/reactivex/disposables/b;
.implements Lio/reactivex/r;
# annotations
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
">",
"Ljava/util/concurrent/atomic/AtomicBoolean;",
"Lio/reactivex/disposables/b;",
"Lio/reactivex/r",
"<TT;>;"
}
.end annotation
# static fields
.field private static final serialVersionUID:J = -0x4eca0434695949bbL
# instance fields
.field final actual:Lio/reactivex/r;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/r",
"<-TT;>;"
}
.end annotation
.end field
.field volatile cancelled:Z
.field final count:J
.field d:Lio/reactivex/disposables/b;
.field final delayError:Z
.field error:Ljava/lang/Throwable;
.field final queue:Lio/reactivex/internal/queue/a;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/internal/queue/a",
"<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
.field final scheduler:Lio/reactivex/s;
.field final time:J
.field final unit:Ljava/util/concurrent/TimeUnit;
# direct methods
.method constructor <init>(Lio/reactivex/r;JJLjava/util/concurrent/TimeUnit;Lio/reactivex/s;IZ)V
.registers 12
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/r",
"<-TT;>;JJ",
"Ljava/util/concurrent/TimeUnit;",
"Lio/reactivex/s;",
"IZ)V"
}
.end annotation
.prologue
.line 66
invoke-direct {p0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
.line 67
iput-object p1, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->actual:Lio/reactivex/r;
.line 68
iput-wide p2, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->count:J
.line 69
iput-wide p4, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->time:J
.line 70
iput-object p6, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->unit:Ljava/util/concurrent/TimeUnit;
.line 71
iput-object p7, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->scheduler:Lio/reactivex/s;
.line 72
new-instance v0, Lio/reactivex/internal/queue/a;
invoke-direct {v0, p8}, Lio/reactivex/internal/queue/a;-><init>(I)V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->queue:Lio/reactivex/internal/queue/a;
.line 73
iput-boolean p9, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->delayError:Z
.line 74
return-void
.end method
# virtual methods
.method public final dispose()V
.registers 3
.prologue
const/4 v1, 0x1
.line 119
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->cancelled:Z
if-nez v0, :cond_18
.line 120
iput-boolean v1, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->cancelled:Z
.line 121
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->d:Lio/reactivex/disposables/b;
invoke-interface {v0}, Lio/reactivex/disposables/b;->dispose()V
.line 123
const/4 v0, 0x0
invoke-virtual {p0, v0, v1}, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->compareAndSet(ZZ)Z
move-result v0
if-eqz v0, :cond_18
.line 124
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->queue:Lio/reactivex/internal/queue/a;
invoke-virtual {v0}, Lio/reactivex/internal/queue/a;->clear()V
.line 127
:cond_18
return-void
.end method
.method final drain()V
.registers 15
.prologue
const/4 v2, 0x1
const/4 v3, 0x0
.line 135
invoke-virtual {p0, v3, v2}, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->compareAndSet(ZZ)Z
move-result v0
if-nez v0, :cond_9
.line 168
:goto_8
return-void
.line 139
:cond_9
iget-object v4, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->actual:Lio/reactivex/r;
.line 140
iget-object v5, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->queue:Lio/reactivex/internal/queue/a;
.line 141
iget-boolean v6, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->delayError:Z
.line 144
:cond_f
:goto_f
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->cancelled:Z
if-eqz v0, :cond_17
.line 145
invoke-virtual {v5}, Lio/reactivex/internal/queue/a;->clear()V
goto :goto_8
.line 149
:cond_17
if-nez v6, :cond_24
.line 150
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->error:Ljava/lang/Throwable;
.line 151
if-eqz v0, :cond_24
.line 152
invoke-virtual {v5}, Lio/reactivex/internal/queue/a;->clear()V
.line 153
invoke-interface {v4, v0}, Lio/reactivex/r;->onError(Ljava/lang/Throwable;)V
goto :goto_8
.line 158
:cond_24
invoke-virtual {v5}, Lio/reactivex/internal/queue/a;->poll()Ljava/lang/Object;
move-result-object v0
.line 159
if-nez v0, :cond_35
move v1, v2
.line 161
:goto_2b
if-eqz v1, :cond_3b
.line 162
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->error:Ljava/lang/Throwable;
.line 163
if-eqz v0, :cond_37
.line 164
invoke-interface {v4, v0}, Lio/reactivex/r;->onError(Ljava/lang/Throwable;)V
goto :goto_8
:cond_35
move v1, v3
.line 159
goto :goto_2b
.line 166
:cond_37
invoke-interface {v4}, Lio/reactivex/r;->onComplete()V
goto :goto_8
.line 172
:cond_3b
invoke-virtual {v5}, Lio/reactivex/internal/queue/a;->poll()Ljava/lang/Object;
move-result-object v1
.line 174
check-cast v0, Ljava/lang/Long;
invoke-virtual {v0}, Ljava/lang/Long;->longValue()J
move-result-wide v8
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->unit:Ljava/util/concurrent/TimeUnit;
invoke-static {v0}, Lio/reactivex/s;->b(Ljava/util/concurrent/TimeUnit;)J
move-result-wide v10
iget-wide v12, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->time:J
sub-long/2addr v10, v12
cmp-long v0, v8, v10
if-ltz v0, :cond_f
.line 178
invoke-interface {v4, v1}, Lio/reactivex/r;->onNext(Ljava/lang/Object;)V
goto :goto_f
.end method
.method public final isDisposed()Z
.registers 2
.prologue
.line 131
iget-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->cancelled:Z
return v0
.end method
.method public final onComplete()V
.registers 1
.prologue
.line 114
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->drain()V
.line 115
return-void
.end method
.method public final onError(Ljava/lang/Throwable;)V
.registers 2
.prologue
.line 108
iput-object p1, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->error:Ljava/lang/Throwable;
.line 109
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->drain()V
.line 110
return-void
.end method
.method public final onNext(Ljava/lang/Object;)V
.registers 20
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.prologue
.line 86
move-object/from16 v0, p0
iget-object v8, v0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->queue:Lio/reactivex/internal/queue/a;
.line 88
move-object/from16 v0, p0
iget-object v2, v0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->unit:Ljava/util/concurrent/TimeUnit;
invoke-static {v2}, Lio/reactivex/s;->b(Ljava/util/concurrent/TimeUnit;)J
move-result-wide v10
.line 89
move-object/from16 v0, p0
iget-wide v12, v0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->time:J
.line 90
move-object/from16 v0, p0
iget-wide v14, v0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->count:J
.line 91
const-wide v2, 0x7fffffffffffffffL
cmp-long v2, v14, v2
if-nez v2, :cond_67
const/4 v2, 0x1
move v3, v2
.line 93
:goto_1f
invoke-static {v10, v11}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v2
move-object/from16 v0, p1
invoke-virtual {v8, v2, v0}, Lio/reactivex/internal/queue/a;->offer(Ljava/lang/Object;Ljava/lang/Object;)Z
.line 95
:goto_28
invoke-virtual {v8}, Lio/reactivex/internal/queue/a;->isEmpty()Z
move-result v2
if-nez v2, :cond_6c
.line 96
invoke-virtual {v8}, Lio/reactivex/internal/queue/a;->peek()Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/lang/Long;
invoke-virtual {v2}, Ljava/lang/Long;->longValue()J
move-result-wide v4
.line 97
sub-long v6, v10, v12
cmp-long v2, v4, v6
if-lez v2, :cond_60
if-nez v3, :cond_6c
.line 1219
iget-object v2, v8, Lio/reactivex/internal/queue/a;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v4
.line 2215
:goto_46
iget-object v2, v8, Lio/reactivex/internal/queue/a;->producerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v16
.line 2219
iget-object v2, v8, Lio/reactivex/internal/queue/a;->consumerIndex:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v2}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v6
.line 1199
cmp-long v2, v4, v6
if-nez v2, :cond_6a
.line 1200
sub-long v4, v16, v6
long-to-int v2, v4
.line 97
shr-int/lit8 v2, v2, 0x1
int-to-long v4, v2
cmp-long v2, v4, v14
if-lez v2, :cond_6c
.line 98
:cond_60
invoke-virtual {v8}, Lio/reactivex/internal/queue/a;->poll()Ljava/lang/Object;
.line 99
invoke-virtual {v8}, Lio/reactivex/internal/queue/a;->poll()Ljava/lang/Object;
goto :goto_28
.line 91
:cond_67
const/4 v2, 0x0
move v3, v2
goto :goto_1f
:cond_6a
move-wide v4, v6
.line 1202
goto :goto_46
.line 104
:cond_6c
return-void
.end method
.method public final onSubscribe(Lio/reactivex/disposables/b;)V
.registers 3
.prologue
.line 78
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->d:Lio/reactivex/disposables/b;
invoke-static {v0, p1}, Lio/reactivex/internal/disposables/DisposableHelper;->validate(Lio/reactivex/disposables/b;Lio/reactivex/disposables/b;)Z
move-result v0
if-eqz v0, :cond_f
.line 79
iput-object p1, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->d:Lio/reactivex/disposables/b;
.line 80
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableTakeLastTimed$TakeLastTimedObserver;->actual:Lio/reactivex/r;
invoke-interface {v0, p0}, Lio/reactivex/r;->onSubscribe(Lio/reactivex/disposables/b;)V
.line 82
:cond_f
return-void
.end method