j.smali

.class final Lrx/internal/schedulers/j;
.super Lrx/k;
.source "ExecutorScheduler.java"

# interfaces
.implements Ljava/lang/Runnable;


# instance fields
.field private cbR:Lrx/g/b;

.field private cbS:Ljava/util/concurrent/ConcurrentLinkedQueue;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/ConcurrentLinkedQueue",
            "<",
            "Lrx/internal/schedulers/ScheduledAction;",
            ">;"
        }
    .end annotation
.end field

.field private executor:Ljava/util/concurrent/Executor;

.field private wip:Ljava/util/concurrent/atomic/AtomicInteger;


# direct methods
.method public constructor <init>(Ljava/util/concurrent/Executor;)V
    .registers 3

    .prologue
    .line 54
    invoke-direct {p0}, Lrx/k;-><init>()V

    .line 55
    iput-object p1, p0, Lrx/internal/schedulers/j;->executor:Ljava/util/concurrent/Executor;

    .line 56
    new-instance v0, Ljava/util/concurrent/ConcurrentLinkedQueue;

    invoke-direct {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;-><init>()V

    iput-object v0, p0, Lrx/internal/schedulers/j;->cbS:Ljava/util/concurrent/ConcurrentLinkedQueue;

    .line 57
    new-instance v0, Ljava/util/concurrent/atomic/AtomicInteger;

    invoke-direct {v0}, Ljava/util/concurrent/atomic/AtomicInteger;-><init>()V

    iput-object v0, p0, Lrx/internal/schedulers/j;->wip:Ljava/util/concurrent/atomic/AtomicInteger;

    .line 58
    new-instance v0, Lrx/g/b;

    invoke-direct {v0}, Lrx/g/b;-><init>()V

    iput-object v0, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    .line 59
    invoke-static {}, Lrx/internal/schedulers/k;->SW()Ljava/util/concurrent/ScheduledExecutorService;

    .line 60
    return-void
.end method


# virtual methods
.method public final b(Lrx/b/a;)Lrx/p;
    .registers 5

    .prologue
    .line 64
    invoke-virtual {p0}, Lrx/internal/schedulers/j;->isUnsubscribed()Z

    move-result v0

    if-eqz v0, :cond_b

    .line 65
    invoke-static {}, Lrx/g/e;->TA()Lrx/p;

    move-result-object v0

    .line 91
    :cond_a
    :goto_a
    return-object v0

    .line 68
    :cond_b
    invoke-static {p1}, Lrx/d/c;->e(Lrx/b/a;)Lrx/b/a;

    move-result-object v1

    .line 70
    new-instance v0, Lrx/internal/schedulers/ScheduledAction;

    iget-object v2, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    invoke-direct {v0, v1, v2}, Lrx/internal/schedulers/ScheduledAction;-><init>(Lrx/b/a;Lrx/g/b;)V

    .line 71
    iget-object v1, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    invoke-virtual {v1, v0}, Lrx/g/b;->add(Lrx/p;)V

    .line 72
    iget-object v1, p0, Lrx/internal/schedulers/j;->cbS:Ljava/util/concurrent/ConcurrentLinkedQueue;

    invoke-virtual {v1, v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->offer(Ljava/lang/Object;)Z

    .line 73
    iget-object v1, p0, Lrx/internal/schedulers/j;->wip:Ljava/util/concurrent/atomic/AtomicInteger;

    invoke-virtual {v1}, Ljava/util/concurrent/atomic/AtomicInteger;->getAndIncrement()I

    move-result v1

    if-nez v1, :cond_a

    .line 79
    :try_start_28
    iget-object v1, p0, Lrx/internal/schedulers/j;->executor:Ljava/util/concurrent/Executor;

    invoke-interface {v1, p0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
    :try_end_2d
    .catch Ljava/util/concurrent/RejectedExecutionException; {:try_start_28 .. :try_end_2d} :catch_2e

    goto :goto_a

    .line 80
    :catch_2e
    move-exception v1

    .line 82
    iget-object v2, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    invoke-virtual {v2, v0}, Lrx/g/b;->e(Lrx/p;)V

    .line 83
    iget-object v0, p0, Lrx/internal/schedulers/j;->wip:Ljava/util/concurrent/atomic/AtomicInteger;

    invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I

    .line 85
    invoke-static {v1}, Lrx/d/c;->onError(Ljava/lang/Throwable;)V

    .line 87
    throw v1
.end method

.method public final isUnsubscribed()Z
    .registers 2

    .prologue
    .line 179
    iget-object v0, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    invoke-virtual {v0}, Lrx/g/b;->isUnsubscribed()Z

    move-result v0

    return v0
.end method

.method public final run()V
    .registers 3

    .prologue
    .line 97
    :cond_0
    iget-object v0, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    invoke-virtual {v0}, Lrx/g/b;->isUnsubscribed()Z

    move-result v0

    if-eqz v0, :cond_e

    .line 98
    iget-object v0, p0, Lrx/internal/schedulers/j;->cbS:Ljava/util/concurrent/ConcurrentLinkedQueue;

    invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->clear()V

    .line 114
    :cond_d
    :goto_d
    return-void

    .line 101
    :cond_e
    iget-object v0, p0, Lrx/internal/schedulers/j;->cbS:Ljava/util/concurrent/ConcurrentLinkedQueue;

    invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->poll()Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Lrx/internal/schedulers/ScheduledAction;

    .line 102
    if-eqz v0, :cond_d

    .line 105
    invoke-virtual {v0}, Lrx/internal/schedulers/ScheduledAction;->isUnsubscribed()Z

    move-result v1

    if-nez v1, :cond_29

    .line 106
    iget-object v1, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    invoke-virtual {v1}, Lrx/g/b;->isUnsubscribed()Z

    move-result v1

    if-nez v1, :cond_32

    .line 107
    invoke-virtual {v0}, Lrx/internal/schedulers/ScheduledAction;->run()V

    .line 113
    :cond_29
    iget-object v0, p0, Lrx/internal/schedulers/j;->wip:Ljava/util/concurrent/atomic/AtomicInteger;

    invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;->decrementAndGet()I

    move-result v0

    if-nez v0, :cond_0

    goto :goto_d

    .line 109
    :cond_32
    iget-object v0, p0, Lrx/internal/schedulers/j;->cbS:Ljava/util/concurrent/ConcurrentLinkedQueue;

    invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->clear()V

    goto :goto_d
.end method

.method public final unsubscribe()V
    .registers 2

    .prologue
    .line 184
    iget-object v0, p0, Lrx/internal/schedulers/j;->cbR:Lrx/g/b;

    invoke-virtual {v0}, Lrx/g/b;->unsubscribe()V

    .line 185
    iget-object v0, p0, Lrx/internal/schedulers/j;->cbS:Ljava/util/concurrent/ConcurrentLinkedQueue;

    invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->clear()V

    .line 186
    return-void
.end method