ObservableGroupBy$State.smali
.class final Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;
.super Ljava/util/concurrent/atomic/AtomicInteger;
.source "ObservableGroupBy.java"
# interfaces
.implements Lio/reactivex/disposables/Disposable;
.implements Lio/reactivex/ObservableSource;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/reactivex/internal/operators/observable/ObservableGroupBy;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x18
name = "State"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
"K:",
"Ljava/lang/Object;",
">",
"Ljava/util/concurrent/atomic/AtomicInteger;",
"Lio/reactivex/disposables/Disposable;",
"Lio/reactivex/ObservableSource<",
"TT;>;"
}
.end annotation
# static fields
.field private static final serialVersionUID:J = -0x35762a4bbab31538L
# 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 cancelled:Ljava/util/concurrent/atomic/AtomicBoolean;
.field final delayError:Z
.field volatile done:Z
.field error:Ljava/lang/Throwable;
.field final key:Ljava/lang/Object;
.annotation system Ldalvik/annotation/Signature;
value = {
"TK;"
}
.end annotation
.end field
.field final once:Ljava/util/concurrent/atomic/AtomicBoolean;
.field final parent:Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver<",
"*TK;TT;>;"
}
.end annotation
.end field
.field final queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/internal/queue/SpscLinkedArrayQueue<",
"TT;>;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(ILio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;Ljava/lang/Object;Z)V
.registers 6
.param p1, "bufferSize" # I
.param p4, "delayError" # Z
.annotation system Ldalvik/annotation/Signature;
value = {
"(I",
"Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver<",
"*TK;TT;>;TK;Z)V"
}
.end annotation
.line 227
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
.local p2, "parent":Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver<*TK;TT;>;"
.local p3, "key":Ljava/lang/Object;, "TK;"
invoke-direct {p0}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>()V
.line 221
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->cancelled:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 223
new-instance v0, Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;-><init>()V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->once:Ljava/util/concurrent/atomic/AtomicBoolean;
.line 225
new-instance v0, Ljava/util/concurrent/atomic/AtomicReference;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
.line 228
new-instance v0, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
invoke-direct {v0, p1}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;-><init>(I)V
iput-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.line 229
iput-object p2, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->parent:Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;
.line 230
iput-object p3, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->key:Ljava/lang/Object;
.line 231
iput-boolean p4, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->delayError:Z
.line 232
return-void
.end method
# virtual methods
.method checkTerminated(ZZLio/reactivex/Observer;Z)Z
.registers 9
.param p1, "d" # Z
.param p2, "empty" # Z
.param p4, "delayError" # Z
.annotation system Ldalvik/annotation/Signature;
value = {
"(ZZ",
"Lio/reactivex/Observer<",
"-TT;>;Z)Z"
}
.end annotation
.line 319
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
.local p3, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->cancelled:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
const/4 v1, 0x1
const/4 v2, 0x0
if-eqz v0, :cond_1c
.line 320
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
invoke-virtual {v0}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;->clear()V
.line 321
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->parent:Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->key:Ljava/lang/Object;
invoke-virtual {v0, v3}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;->cancel(Ljava/lang/Object;)V
.line 322
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0, v2}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 323
return v1
.line 326
:cond_1c
if-eqz p1, :cond_50
.line 327
if-eqz p4, :cond_33
.line 328
if-eqz p2, :cond_50
.line 329
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->error:Ljava/lang/Throwable;
.line 330
.local v0, "e":Ljava/lang/Throwable;
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v3, v2}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 331
if-eqz v0, :cond_2f
.line 332
invoke-interface {p3, v0}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
goto :goto_32
.line 334
:cond_2f
invoke-interface {p3}, Lio/reactivex/Observer;->onComplete()V
.line 336
:goto_32
return v1
.line 339
.end local v0 # "e":Ljava/lang/Throwable;
:cond_33
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->error:Ljava/lang/Throwable;
.line 340
.restart local v0 # "e":Ljava/lang/Throwable;
if-eqz v0, :cond_45
.line 341
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
invoke-virtual {v3}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;->clear()V
.line 342
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v3, v2}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 343
invoke-interface {p3, v0}, Lio/reactivex/Observer;->onError(Ljava/lang/Throwable;)V
.line 344
return v1
.line 346
:cond_45
if-eqz p2, :cond_50
.line 347
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v3, v2}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 348
invoke-interface {p3}, Lio/reactivex/Observer;->onComplete()V
.line 349
return v1
.line 354
.end local v0 # "e":Ljava/lang/Throwable;
:cond_50
const/4 v0, 0x0
return v0
.end method
.method public dispose()V
.registers 4
.line 236
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->cancelled: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_1d
.line 237
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->getAndIncrement()I
move-result v0
if-nez v0, :cond_1d
.line 238
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->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 239
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->parent:Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->key:Ljava/lang/Object;
invoke-virtual {v0, v1}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$GroupByObserver;->cancel(Ljava/lang/Object;)V
.line 242
:cond_1d
return-void
.end method
.method drain()V
.registers 9
.line 281
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->getAndIncrement()I
move-result v0
if-eqz v0, :cond_7
.line 282
return-void
.line 284
:cond_7
const/4 v0, 0x1
.line 286
.local v0, "missed":I
iget-object v1, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
.line 287
.local v1, "q":Lio/reactivex/internal/queue/SpscLinkedArrayQueue;, "Lio/reactivex/internal/queue/SpscLinkedArrayQueue<TT;>;"
iget-boolean v2, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->delayError:Z
.line 288
.local v2, "delayError":Z
iget-object v3, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v3}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v3
check-cast v3, Lio/reactivex/Observer;
.line 290
.local v3, "a":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
:goto_14
if-eqz v3, :cond_2f
.line 292
:goto_16
iget-boolean v4, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->done:Z
.line 293
.local v4, "d":Z
invoke-virtual {v1}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;->poll()Ljava/lang/Object;
move-result-object v5
.line 294
.local v5, "v":Ljava/lang/Object;, "TT;"
if-nez v5, :cond_20
const/4 v6, 0x1
goto :goto_21
:cond_20
const/4 v6, 0x0
.line 296
.local v6, "empty":Z
:goto_21
invoke-virtual {p0, v4, v6, v3, v2}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->checkTerminated(ZZLio/reactivex/Observer;Z)Z
move-result v7
if-eqz v7, :cond_28
.line 297
return-void
.line 300
:cond_28
if-eqz v6, :cond_2b
.line 301
goto :goto_2f
.line 304
:cond_2b
invoke-interface {v3, v5}, Lio/reactivex/Observer;->onNext(Ljava/lang/Object;)V
.line 305
.end local v4 # "d":Z
.end local v5 # "v":Ljava/lang/Object;, "TT;"
.end local v6 # "empty":Z
goto :goto_16
.line 308
:cond_2f
:goto_2f
neg-int v4, v0
invoke-virtual {p0, v4}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->addAndGet(I)I
move-result v0
.line 309
if-nez v0, :cond_38
.line 310
nop
.line 316
return-void
.line 312
:cond_38
if-nez v3, :cond_44
.line 313
iget-object v4, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v4}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v4
move-object v3, v4
check-cast v3, Lio/reactivex/Observer;
goto :goto_14
.line 312
:cond_44
goto :goto_14
.end method
.method public isDisposed()Z
.registers 2
.line 246
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->cancelled:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
return v0
.end method
.method public onComplete()V
.registers 2
.line 276
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->done:Z
.line 277
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->drain()V
.line 278
return-void
.end method
.method public onError(Ljava/lang/Throwable;)V
.registers 3
.param p1, "e" # Ljava/lang/Throwable;
.line 270
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
iput-object p1, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->error:Ljava/lang/Throwable;
.line 271
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->done:Z
.line 272
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->drain()V
.line 273
return-void
.end method
.method public onNext(Ljava/lang/Object;)V
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.line 265
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
.local p1, "t":Ljava/lang/Object;, "TT;"
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->queue:Lio/reactivex/internal/queue/SpscLinkedArrayQueue;
invoke-virtual {v0, p1}, Lio/reactivex/internal/queue/SpscLinkedArrayQueue;->offer(Ljava/lang/Object;)Z
.line 266
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->drain()V
.line 267
return-void
.end method
.method public subscribe(Lio/reactivex/Observer;)V
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lio/reactivex/Observer<",
"-TT;>;)V"
}
.end annotation
.line 251
.local p0, "this":Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;, "Lio/reactivex/internal/operators/observable/ObservableGroupBy$State<TT;TK;>;"
.local p1, "s":Lio/reactivex/Observer;, "Lio/reactivex/Observer<-TT;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->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_25
.line 252
invoke-interface {p1, p0}, Lio/reactivex/Observer;->onSubscribe(Lio/reactivex/disposables/Disposable;)V
.line 253
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0, p1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
.line 254
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->cancelled:Ljava/util/concurrent/atomic/AtomicBoolean;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicBoolean;->get()Z
move-result v0
if-eqz v0, :cond_21
.line 255
iget-object v0, p0, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->actual:Ljava/util/concurrent/atomic/AtomicReference;
const/4 v1, 0x0
invoke-virtual {v0, v1}, Ljava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
goto :goto_2f
.line 257
:cond_21
invoke-virtual {p0}, Lio/reactivex/internal/operators/observable/ObservableGroupBy$State;->drain()V
goto :goto_2f
.line 260
:cond_25
new-instance v0, Ljava/lang/IllegalStateException;
const-string v1, "Only one 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 262
:goto_2f
return-void
.end method