FlowableFlattenIterable$FlattenIterableSubscriber.smali
.class final Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;
.super Lio/reactivex/internal/subscriptions/BasicIntQueueSubscription;
.source "FlowableFlattenIterable.java"
# interfaces
.implements Lio/reactivex/FlowableSubscriber;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x18
name = "FlattenIterableSubscriber"
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<T:",
"Ljava/lang/Object;",
"R:",
"Ljava/lang/Object;",
">",
"Lio/reactivex/internal/subscriptions/BasicIntQueueSubscription<",
"TR;>;",
"Lio/reactivex/FlowableSubscriber<",
"TT;>;"
}
.end annotation
# static fields
.field private static final serialVersionUID:J = -0x2af733f1e9031a6bL
# instance fields
.field final actual:Lorg/reactivestreams/Subscriber;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lorg/reactivestreams/Subscriber<",
"-TR;>;"
}
.end annotation
.end field
.field volatile cancelled:Z
.field consumed:I
.field current:Ljava/util/Iterator;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Iterator<",
"+TR;>;"
}
.end annotation
.end field
.field volatile done:Z
.field final error:Ljava/util/concurrent/atomic/AtomicReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/atomic/AtomicReference<",
"Ljava/lang/Throwable;",
">;"
}
.end annotation
.end field
.field fusionMode:I
.field final limit:I
.field final mapper:Lio/reactivex/functions/Function;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/functions/Function<",
"-TT;+",
"Ljava/lang/Iterable<",
"+TR;>;>;"
}
.end annotation
.end field
.field final prefetch:I
.field queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lio/reactivex/internal/fuseable/SimpleQueue<",
"TT;>;"
}
.end annotation
.end field
.field final requested:Ljava/util/concurrent/atomic/AtomicLong;
.field s:Lorg/reactivestreams/Subscription;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method constructor <init>(Lorg/reactivestreams/Subscriber;Lio/reactivex/functions/Function;I)V
.registers 5
.param p3, "prefetch" # I
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lorg/reactivestreams/Subscriber<",
"-TR;>;",
"Lio/reactivex/functions/Function<",
"-TT;+",
"Ljava/lang/Iterable<",
"+TR;>;>;I)V"
}
.end annotation
.line 118
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
.local p1, "actual":Lorg/reactivestreams/Subscriber;, "Lorg/reactivestreams/Subscriber<-TR;>;"
.local p2, "mapper":Lio/reactivex/functions/Function;, "Lio/reactivex/functions/Function<-TT;+Ljava/lang/Iterable<+TR;>;>;"
invoke-direct {p0}, Lio/reactivex/internal/subscriptions/BasicIntQueueSubscription;-><init>()V
.line 119
iput-object p1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->actual:Lorg/reactivestreams/Subscriber;
.line 120
iput-object p2, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->mapper:Lio/reactivex/functions/Function;
.line 121
iput p3, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->prefetch:I
.line 122
shr-int/lit8 v0, p3, 0x2
sub-int v0, p3, v0
iput v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->limit:I
.line 123
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/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
.line 124
new-instance v0, Ljava/util/concurrent/atomic/AtomicLong;
invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicLong;-><init>()V
iput-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->requested:Ljava/util/concurrent/atomic/AtomicLong;
.line 125
return-void
.end method
# virtual methods
.method public cancel()V
.registers 2
.line 207
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->cancelled:Z
if-nez v0, :cond_17
.line 208
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->cancelled:Z
.line 210
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->s:Lorg/reactivestreams/Subscription;
invoke-interface {v0}, Lorg/reactivestreams/Subscription;->cancel()V
.line 212
invoke-virtual {p0}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->getAndIncrement()I
move-result v0
if-nez v0, :cond_17
.line 213
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
invoke-interface {v0}, Lio/reactivex/internal/fuseable/SimpleQueue;->clear()V
.line 216
:cond_17
return-void
.end method
.method checkTerminated(ZZLorg/reactivestreams/Subscriber;Lio/reactivex/internal/fuseable/SimpleQueue;)Z
.registers 9
.param p1, "d" # Z
.param p2, "empty" # Z
.annotation system Ldalvik/annotation/Signature;
value = {
"(ZZ",
"Lorg/reactivestreams/Subscriber<",
"*>;",
"Lio/reactivex/internal/fuseable/SimpleQueue<",
"*>;)Z"
}
.end annotation
.line 383
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
.local p3, "a":Lorg/reactivestreams/Subscriber;, "Lorg/reactivestreams/Subscriber<*>;"
.local p4, "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<*>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->cancelled:Z
const/4 v1, 0x0
const/4 v2, 0x1
if-eqz v0, :cond_c
.line 384
iput-object v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 385
invoke-interface {p4}, Lio/reactivex/internal/fuseable/SimpleQueue;->clear()V
.line 386
return v2
.line 388
:cond_c
if-eqz p1, :cond_2d
.line 389
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error: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/Throwable;
.line 390
.local v0, "ex":Ljava/lang/Throwable;
if-eqz v0, :cond_27
.line 391
iget-object v3, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v3}, Lio/reactivex/internal/util/ExceptionHelper;->terminate(Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Throwable;
move-result-object v0
.line 393
iput-object v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 394
invoke-interface {p4}, Lio/reactivex/internal/fuseable/SimpleQueue;->clear()V
.line 396
invoke-interface {p3, v0}, Lorg/reactivestreams/Subscriber;->onError(Ljava/lang/Throwable;)V
.line 397
return v2
.line 398
:cond_27
if-eqz p2, :cond_2d
.line 399
invoke-interface {p3}, Lorg/reactivestreams/Subscriber;->onComplete()V
.line 400
return v2
.line 403
.end local v0 # "ex":Ljava/lang/Throwable;
:cond_2d
const/4 v0, 0x0
return v0
.end method
.method public clear()V
.registers 2
.line 408
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
const/4 v0, 0x0
iput-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 409
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
invoke-interface {v0}, Lio/reactivex/internal/fuseable/SimpleQueue;->clear()V
.line 410
return-void
.end method
.method consumedOne(Z)V
.registers 6
.param p1, "enabled" # Z
.line 371
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
if-eqz p1, :cond_16
.line 372
iget v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->consumed:I
add-int/lit8 v0, v0, 0x1
.line 373
.local v0, "c":I
iget v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->limit:I
if-ne v0, v1, :cond_14
.line 374
const/4 v1, 0x0
iput v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->consumed:I
.line 375
iget-object v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->s:Lorg/reactivestreams/Subscription;
int-to-long v2, v0
invoke-interface {v1, v2, v3}, Lorg/reactivestreams/Subscription;->request(J)V
goto :goto_16
.line 377
:cond_14
iput v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->consumed:I
.line 380
.end local v0 # "c":I
:cond_16
:goto_16
return-void
.end method
.method drain()V
.registers 16
.line 219
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
invoke-virtual {p0}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->getAndIncrement()I
move-result v0
if-eqz v0, :cond_7
.line 220
return-void
.line 223
:cond_7
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->actual:Lorg/reactivestreams/Subscriber;
.line 224
.local v0, "a":Lorg/reactivestreams/Subscriber;, "Lorg/reactivestreams/Subscriber<-TR;>;"
iget-object v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 225
.local v1, "q":Lio/reactivex/internal/fuseable/SimpleQueue;, "Lio/reactivex/internal/fuseable/SimpleQueue<TT;>;"
iget v2, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->fusionMode:I
const/4 v3, 0x1
const/4 v4, 0x0
if-eq v2, v3, :cond_13
const/4 v2, 0x1
goto :goto_14
:cond_13
const/4 v2, 0x0
.line 227
.local v2, "replenish":Z
:goto_14
const/4 v5, 0x1
.line 229
.local v5, "missed":I
iget-object v6, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 233
.local v6, "it":Ljava/util/Iterator;, "Ljava/util/Iterator<+TR;>;"
:goto_17
const/4 v7, 0x0
if-nez v6, :cond_80
.line 235
iget-boolean v8, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
.line 240
.local v8, "d":Z
:try_start_1c
invoke-interface {v1}, Lio/reactivex/internal/fuseable/SimpleQueue;->poll()Ljava/lang/Object;
move-result-object v9
:try_end_20
.catchall {:try_start_1c .. :try_end_20} :catchall_63
.line 252
.local v9, "t":Ljava/lang/Object;, "TT;"
nop
.line 254
if-nez v9, :cond_25
const/4 v10, 0x1
goto :goto_26
:cond_25
const/4 v10, 0x0
.line 256
.local v10, "empty":Z
:goto_26
invoke-virtual {p0, v8, v10, v0, v1}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->checkTerminated(ZZLorg/reactivestreams/Subscriber;Lio/reactivex/internal/fuseable/SimpleQueue;)Z
move-result v11
if-eqz v11, :cond_2d
.line 257
return-void
.line 260
:cond_2d
if-eqz v9, :cond_80
.line 266
:try_start_2f
iget-object v11, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->mapper:Lio/reactivex/functions/Function;
invoke-interface {v11, v9}, Lio/reactivex/functions/Function;->apply(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v11
check-cast v11, Ljava/lang/Iterable;
.line 268
.local v11, "iterable":Ljava/lang/Iterable;, "Ljava/lang/Iterable<+TR;>;"
invoke-interface {v11}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object v12
move-object v6, v12
.line 270
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v12
:try_end_40
.catchall {:try_start_2f .. :try_end_40} :catchall_4b
.line 278
.local v12, "b":Z
nop
.line 280
if-nez v12, :cond_48
.line 281
const/4 v6, 0x0
.line 282
invoke-virtual {p0, v2}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->consumedOne(Z)V
.line 283
goto :goto_17
.line 286
:cond_48
iput-object v6, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
goto :goto_80
.line 271
.end local v11 # "iterable":Ljava/lang/Iterable;, "Ljava/lang/Iterable<+TR;>;"
.end local v12 # "b":Z
:catchall_4b
move-exception v3
.line 272
.local v3, "ex":Ljava/lang/Throwable;
invoke-static {v3}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 273
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->s:Lorg/reactivestreams/Subscription;
invoke-interface {v4}, Lorg/reactivestreams/Subscription;->cancel()V
.line 274
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4, v3}, Lio/reactivex/internal/util/ExceptionHelper;->addThrowable(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Throwable;)Z
.line 275
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4}, Lio/reactivex/internal/util/ExceptionHelper;->terminate(Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Throwable;
move-result-object v3
.line 276
invoke-interface {v0, v3}, Lorg/reactivestreams/Subscriber;->onError(Ljava/lang/Throwable;)V
.line 277
return-void
.line 241
.end local v3 # "ex":Ljava/lang/Throwable;
.end local v9 # "t":Ljava/lang/Object;, "TT;"
.end local v10 # "empty":Z
:catchall_63
move-exception v3
.line 242
.restart local v3 # "ex":Ljava/lang/Throwable;
invoke-static {v3}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 243
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->s:Lorg/reactivestreams/Subscription;
invoke-interface {v4}, Lorg/reactivestreams/Subscription;->cancel()V
.line 244
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4, v3}, Lio/reactivex/internal/util/ExceptionHelper;->addThrowable(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Throwable;)Z
.line 245
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4}, Lio/reactivex/internal/util/ExceptionHelper;->terminate(Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Throwable;
move-result-object v3
.line 247
iput-object v7, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 248
invoke-interface {v1}, Lio/reactivex/internal/fuseable/SimpleQueue;->clear()V
.line 250
invoke-interface {v0, v3}, Lorg/reactivestreams/Subscriber;->onError(Ljava/lang/Throwable;)V
.line 251
return-void
.line 290
.end local v3 # "ex":Ljava/lang/Throwable;
.end local v8 # "d":Z
:cond_80
:goto_80
if-eqz v6, :cond_125
.line 291
iget-object v8, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->requested:Ljava/util/concurrent/atomic/AtomicLong;
invoke-virtual {v8}, Ljava/util/concurrent/atomic/AtomicLong;->get()J
move-result-wide v8
.line 292
.local v8, "r":J
const-wide/16 v10, 0x0
.line 294
.local v10, "e":J
:goto_8a
cmp-long v12, v10, v8
if-eqz v12, :cond_f4
.line 295
iget-boolean v12, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
invoke-virtual {p0, v12, v4, v0, v1}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->checkTerminated(ZZLorg/reactivestreams/Subscriber;Lio/reactivex/internal/fuseable/SimpleQueue;)Z
move-result v12
if-eqz v12, :cond_97
.line 296
return-void
.line 302
:cond_97
:try_start_97
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v12
const-string v13, "The iterator returned a null value"
invoke-static {v12, v13}, Lio/reactivex/internal/functions/ObjectHelper;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
move-result-object v12
:try_end_a1
.catchall {:try_start_97 .. :try_end_a1} :catchall_da
.line 311
.local v12, "v":Ljava/lang/Object;, "TR;"
nop
.line 313
invoke-interface {v0, v12}, Lorg/reactivestreams/Subscriber;->onNext(Ljava/lang/Object;)V
.line 315
iget-boolean v13, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
invoke-virtual {p0, v13, v4, v0, v1}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->checkTerminated(ZZLorg/reactivestreams/Subscriber;Lio/reactivex/internal/fuseable/SimpleQueue;)Z
move-result v13
if-eqz v13, :cond_ae
.line 316
return-void
.line 319
:cond_ae
const-wide/16 v13, 0x1
add-long/2addr v10, v13
.line 324
:try_start_b1
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v13
:try_end_b5
.catchall {:try_start_b1 .. :try_end_b5} :catchall_c0
.line 333
.local v13, "b":Z
nop
.line 335
if-nez v13, :cond_bf
.line 336
invoke-virtual {p0, v2}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->consumedOne(Z)V
.line 337
const/4 v6, 0x0
.line 338
iput-object v7, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 339
goto :goto_f4
.line 341
.end local v12 # "v":Ljava/lang/Object;, "TR;"
.end local v13 # "b":Z
:cond_bf
goto :goto_8a
.line 325
.restart local v12 # "v":Ljava/lang/Object;, "TR;"
:catchall_c0
move-exception v3
.line 326
.restart local v3 # "ex":Ljava/lang/Throwable;
invoke-static {v3}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 327
iput-object v7, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 328
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->s:Lorg/reactivestreams/Subscription;
invoke-interface {v4}, Lorg/reactivestreams/Subscription;->cancel()V
.line 329
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4, v3}, Lio/reactivex/internal/util/ExceptionHelper;->addThrowable(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Throwable;)Z
.line 330
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4}, Lio/reactivex/internal/util/ExceptionHelper;->terminate(Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Throwable;
move-result-object v3
.line 331
invoke-interface {v0, v3}, Lorg/reactivestreams/Subscriber;->onError(Ljava/lang/Throwable;)V
.line 332
return-void
.line 303
.end local v3 # "ex":Ljava/lang/Throwable;
.end local v12 # "v":Ljava/lang/Object;, "TR;"
:catchall_da
move-exception v3
.line 304
.restart local v3 # "ex":Ljava/lang/Throwable;
invoke-static {v3}, Lio/reactivex/exceptions/Exceptions;->throwIfFatal(Ljava/lang/Throwable;)V
.line 305
iput-object v7, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 306
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->s:Lorg/reactivestreams/Subscription;
invoke-interface {v4}, Lorg/reactivestreams/Subscription;->cancel()V
.line 307
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4, v3}, Lio/reactivex/internal/util/ExceptionHelper;->addThrowable(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Throwable;)Z
.line 308
iget-object v4, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v4}, Lio/reactivex/internal/util/ExceptionHelper;->terminate(Ljava/util/concurrent/atomic/AtomicReference;)Ljava/lang/Throwable;
move-result-object v3
.line 309
invoke-interface {v0, v3}, Lorg/reactivestreams/Subscriber;->onError(Ljava/lang/Throwable;)V
.line 310
return-void
.line 343
.end local v3 # "ex":Ljava/lang/Throwable;
:cond_f4
:goto_f4
cmp-long v7, v10, v8
if-nez v7, :cond_10c
.line 344
iget-boolean v7, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
.line 345
.local v7, "d":Z
invoke-interface {v1}, Lio/reactivex/internal/fuseable/SimpleQueue;->isEmpty()Z
move-result v12
if-eqz v12, :cond_104
if-nez v6, :cond_104
const/4 v12, 0x1
goto :goto_105
:cond_104
const/4 v12, 0x0
.line 347
.local v12, "empty":Z
:goto_105
invoke-virtual {p0, v7, v12, v0, v1}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->checkTerminated(ZZLorg/reactivestreams/Subscriber;Lio/reactivex/internal/fuseable/SimpleQueue;)Z
move-result v13
if-eqz v13, :cond_10c
.line 348
return-void
.line 352
.end local v7 # "d":Z
.end local v12 # "empty":Z
:cond_10c
const-wide/16 v12, 0x0
cmp-long v7, v10, v12
if-eqz v7, :cond_121
.line 353
const-wide v12, 0x7fffffffffffffffL
cmp-long v7, v8, v12
if-eqz v7, :cond_121
.line 354
iget-object v7, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->requested:Ljava/util/concurrent/atomic/AtomicLong;
neg-long v12, v10
invoke-virtual {v7, v12, v13}, Ljava/util/concurrent/atomic/AtomicLong;->addAndGet(J)J
.line 358
:cond_121
if-nez v6, :cond_125
.line 359
goto/16 :goto_17
.line 363
.end local v8 # "r":J
.end local v10 # "e":J
:cond_125
neg-int v7, v5
invoke-virtual {p0, v7}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->addAndGet(I)I
move-result v5
.line 364
if-nez v5, :cond_12e
.line 365
nop
.line 368
return-void
.line 364
:cond_12e
goto/16 :goto_17
.end method
.method public isEmpty()Z
.registers 3
.line 414
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 415
.local v0, "it":Ljava/util/Iterator;, "Ljava/util/Iterator<+TR;>;"
if-nez v0, :cond_b
.line 416
iget-object v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
invoke-interface {v1}, Lio/reactivex/internal/fuseable/SimpleQueue;->isEmpty()Z
move-result v1
return v1
.line 418
:cond_b
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
xor-int/lit8 v1, v1, 0x1
return v1
.end method
.method public onComplete()V
.registers 2
.line 190
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
if-eqz v0, :cond_5
.line 191
return-void
.line 193
:cond_5
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
.line 194
invoke-virtual {p0}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->drain()V
.line 195
return-void
.end method
.method public onError(Ljava/lang/Throwable;)V
.registers 3
.param p1, "t" # Ljava/lang/Throwable;
.line 180
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
if-nez v0, :cond_13
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->error:Ljava/util/concurrent/atomic/AtomicReference;
invoke-static {v0, p1}, Lio/reactivex/internal/util/ExceptionHelper;->addThrowable(Ljava/util/concurrent/atomic/AtomicReference;Ljava/lang/Throwable;)Z
move-result v0
if-eqz v0, :cond_13
.line 181
const/4 v0, 0x1
iput-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
.line 182
invoke-virtual {p0}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->drain()V
goto :goto_16
.line 184
:cond_13
invoke-static {p1}, Lio/reactivex/plugins/RxJavaPlugins;->onError(Ljava/lang/Throwable;)V
.line 186
:goto_16
return-void
.end method
.method public onNext(Ljava/lang/Object;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)V"
}
.end annotation
.line 168
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
.local p1, "t":Ljava/lang/Object;, "TT;"
iget-boolean v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
if-eqz v0, :cond_5
.line 169
return-void
.line 171
:cond_5
iget v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->fusionMode:I
if-nez v0, :cond_1c
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
invoke-interface {v0, p1}, Lio/reactivex/internal/fuseable/SimpleQueue;->offer(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1c
.line 172
new-instance v0, Lio/reactivex/exceptions/MissingBackpressureException;
const-string v1, "Queue is full?!"
invoke-direct {v0, v1}, Lio/reactivex/exceptions/MissingBackpressureException;-><init>(Ljava/lang/String;)V
invoke-virtual {p0, v0}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->onError(Ljava/lang/Throwable;)V
.line 173
return-void
.line 175
:cond_1c
invoke-virtual {p0}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->drain()V
.line 176
return-void
.end method
.method public onSubscribe(Lorg/reactivestreams/Subscription;)V
.registers 6
.param p1, "s" # Lorg/reactivestreams/Subscription;
.line 129
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->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_4c
.line 130
iput-object p1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->s:Lorg/reactivestreams/Subscription;
.line 132
instance-of v0, p1, Lio/reactivex/internal/fuseable/QueueSubscription;
if-eqz v0, :cond_38
.line 134
move-object v0, p1
check-cast v0, Lio/reactivex/internal/fuseable/QueueSubscription;
.line 136
.local v0, "qs":Lio/reactivex/internal/fuseable/QueueSubscription;, "Lio/reactivex/internal/fuseable/QueueSubscription<TT;>;"
const/4 v1, 0x3
invoke-interface {v0, v1}, Lio/reactivex/internal/fuseable/QueueSubscription;->requestFusion(I)I
move-result v1
.line 138
.local v1, "m":I
const/4 v2, 0x1
if-ne v1, v2, :cond_25
.line 139
iput v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->fusionMode:I
.line 140
iput-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 141
iput-boolean v2, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->done:Z
.line 143
iget-object v2, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->actual:Lorg/reactivestreams/Subscriber;
invoke-interface {v2, p0}, Lorg/reactivestreams/Subscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V
.line 145
return-void
.line 147
:cond_25
const/4 v2, 0x2
if-ne v1, v2, :cond_38
.line 148
iput v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->fusionMode:I
.line 149
iput-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 151
iget-object v2, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->actual:Lorg/reactivestreams/Subscriber;
invoke-interface {v2, p0}, Lorg/reactivestreams/Subscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V
.line 153
iget v2, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->prefetch:I
int-to-long v2, v2
invoke-interface {p1, v2, v3}, Lorg/reactivestreams/Subscription;->request(J)V
.line 154
return-void
.line 158
.end local v0 # "qs":Lio/reactivex/internal/fuseable/QueueSubscription;, "Lio/reactivex/internal/fuseable/QueueSubscription<TT;>;"
.end local v1 # "m":I
:cond_38
new-instance v0, Lio/reactivex/internal/queue/SpscArrayQueue;
iget v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->prefetch:I
invoke-direct {v0, v1}, Lio/reactivex/internal/queue/SpscArrayQueue;-><init>(I)V
iput-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
.line 160
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->actual:Lorg/reactivestreams/Subscriber;
invoke-interface {v0, p0}, Lorg/reactivestreams/Subscriber;->onSubscribe(Lorg/reactivestreams/Subscription;)V
.line 162
iget v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->prefetch:I
int-to-long v0, v0
invoke-interface {p1, v0, v1}, Lorg/reactivestreams/Subscription;->request(J)V
.line 164
:cond_4c
return-void
.end method
.method public poll()Ljava/lang/Object;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"()TR;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 424
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 426
.local v0, "it":Ljava/util/Iterator;, "Ljava/util/Iterator<+TR;>;"
:goto_2
const/4 v1, 0x0
if-nez v0, :cond_24
.line 427
iget-object v2, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->queue:Lio/reactivex/internal/fuseable/SimpleQueue;
invoke-interface {v2}, Lio/reactivex/internal/fuseable/SimpleQueue;->poll()Ljava/lang/Object;
move-result-object v2
.line 428
.local v2, "v":Ljava/lang/Object;, "TT;"
if-nez v2, :cond_e
.line 429
return-object v1
.line 432
:cond_e
iget-object v3, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->mapper:Lio/reactivex/functions/Function;
invoke-interface {v3, v2}, Lio/reactivex/functions/Function;->apply(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/lang/Iterable;
invoke-interface {v3}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;
move-result-object v0
.line 434
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-nez v3, :cond_22
.line 435
const/4 v0, 0x0
.line 436
goto :goto_2
.line 438
:cond_22
iput-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 441
.end local v2 # "v":Ljava/lang/Object;, "TT;"
:cond_24
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
const-string v3, "The iterator returned a null value"
invoke-static {v2, v3}, Lio/reactivex/internal/functions/ObjectHelper;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
move-result-object v2
.line 443
.local v2, "r":Ljava/lang/Object;, "TR;"
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-nez v3, :cond_36
.line 444
iput-object v1, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->current:Ljava/util/Iterator;
.line 447
:cond_36
return-object v2
.end method
.method public request(J)V
.registers 4
.param p1, "n" # J
.line 199
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
invoke-static {p1, p2}, Lio/reactivex/internal/subscriptions/SubscriptionHelper;->validate(J)Z
move-result v0
if-eqz v0, :cond_e
.line 200
iget-object v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->requested:Ljava/util/concurrent/atomic/AtomicLong;
invoke-static {v0, p1, p2}, Lio/reactivex/internal/util/BackpressureHelper;->add(Ljava/util/concurrent/atomic/AtomicLong;J)J
.line 201
invoke-virtual {p0}, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->drain()V
.line 203
:cond_e
return-void
.end method
.method public requestFusion(I)I
.registers 4
.param p1, "requestedMode" # I
.line 453
.local p0, "this":Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;, "Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber<TT;TR;>;"
and-int/lit8 v0, p1, 0x1
if-eqz v0, :cond_a
iget v0, p0, Lio/reactivex/internal/operators/flowable/FlowableFlattenIterable$FlattenIterableSubscriber;->fusionMode:I
const/4 v1, 0x1
if-ne v0, v1, :cond_a
.line 454
return v1
.line 456
:cond_a
const/4 v0, 0x0
return v0
.end method