SchedulePeriodicHelper$1.smali
.class final Lrx/internal/schedulers/SchedulePeriodicHelper$1;
.super Ljava/lang/Object;
.source "SchedulePeriodicHelper.java"
# interfaces
.implements Lrx/functions/Action0;
# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
value = Lrx/internal/schedulers/SchedulePeriodicHelper;->schedulePeriodically(Lrx/Scheduler$Worker;Lrx/functions/Action0;JJLjava/util/concurrent/TimeUnit;Lrx/internal/schedulers/SchedulePeriodicHelper$NowNanoSupplier;)Lrx/Subscription;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x8
name = null
.end annotation
# instance fields
.field count:J
.field lastNowNanos:J
.field startInNanos:J
.field final synthetic val$action:Lrx/functions/Action0;
.field final synthetic val$firstNowNanos:J
.field final synthetic val$firstStartInNanos:J
.field final synthetic val$mas:Lrx/internal/subscriptions/SequentialSubscription;
.field final synthetic val$nowNanoSupplier:Lrx/internal/schedulers/SchedulePeriodicHelper$NowNanoSupplier;
.field final synthetic val$periodInNanos:J
.field final synthetic val$worker:Lrx/Scheduler$Worker;
# direct methods
.method constructor <init>(JJLrx/functions/Action0;Lrx/internal/subscriptions/SequentialSubscription;Lrx/internal/schedulers/SchedulePeriodicHelper$NowNanoSupplier;Lrx/Scheduler$Worker;J)V
.registers 11
.line 1
iput-wide p1, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$firstNowNanos:J
iput-wide p3, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$firstStartInNanos:J
iput-object p5, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$action:Lrx/functions/Action0;
iput-object p6, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$mas:Lrx/internal/subscriptions/SequentialSubscription;
iput-object p7, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$nowNanoSupplier:Lrx/internal/schedulers/SchedulePeriodicHelper$NowNanoSupplier;
iput-object p8, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$worker:Lrx/Scheduler$Worker;
iput-wide p9, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$periodInNanos:J
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 2
iget-wide p1, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$firstNowNanos:J
iput-wide p1, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->lastNowNanos:J
.line 3
iget-wide p1, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$firstStartInNanos:J
iput-wide p1, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->startInNanos:J
return-void
.end method
# virtual methods
.method public call()V
.registers 12
.line 1
iget-object v0, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$action:Lrx/functions/Action0;
invoke-interface {v0}, Lrx/functions/Action0;->call()V
.line 2
iget-object v0, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$mas:Lrx/internal/subscriptions/SequentialSubscription;
invoke-virtual {v0}, Lrx/internal/subscriptions/SequentialSubscription;->isUnsubscribed()Z
move-result v0
if-nez v0, :cond_62
.line 3
iget-object v0, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$nowNanoSupplier:Lrx/internal/schedulers/SchedulePeriodicHelper$NowNanoSupplier;
if-eqz v0, :cond_16
invoke-interface {v0}, Lrx/internal/schedulers/SchedulePeriodicHelper$NowNanoSupplier;->nowNanos()J
move-result-wide v0
goto :goto_22
:cond_16
sget-object v0, Ljava/util/concurrent/TimeUnit;->MILLISECONDS:Ljava/util/concurrent/TimeUnit;
iget-object v1, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$worker:Lrx/Scheduler$Worker;
invoke-virtual {v1}, Lrx/Scheduler$Worker;->now()J
move-result-wide v1
invoke-virtual {v0, v1, v2}, Ljava/util/concurrent/TimeUnit;->toNanos(J)J
move-result-wide v0
.line 4
:goto_22
sget-wide v2, Lrx/internal/schedulers/SchedulePeriodicHelper;->CLOCK_DRIFT_TOLERANCE_NANOS:J
add-long v4, v0, v2
iget-wide v6, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->lastNowNanos:J
const-wide/16 v8, 0x1
cmp-long v10, v4, v6
if-ltz v10, :cond_42
iget-wide v4, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$periodInNanos:J
add-long/2addr v6, v4
add-long/2addr v6, v2
cmp-long v2, v0, v6
if-ltz v2, :cond_37
goto :goto_42
.line 5
:cond_37
iget-wide v2, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->startInNanos:J
iget-wide v6, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->count:J
add-long/2addr v6, v8
iput-wide v6, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->count:J
mul-long v6, v6, v4
add-long/2addr v2, v6
goto :goto_52
.line 6
:cond_42
:goto_42
iget-wide v2, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$periodInNanos:J
add-long v4, v0, v2
.line 7
iget-wide v6, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->count:J
add-long/2addr v6, v8
iput-wide v6, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->count:J
mul-long v2, v2, v6
sub-long v2, v4, v2
iput-wide v2, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->startInNanos:J
move-wide v2, v4
.line 8
:goto_52
iput-wide v0, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->lastNowNanos:J
sub-long/2addr v2, v0
.line 9
iget-object v0, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$mas:Lrx/internal/subscriptions/SequentialSubscription;
iget-object v1, p0, Lrx/internal/schedulers/SchedulePeriodicHelper$1;->val$worker:Lrx/Scheduler$Worker;
sget-object v4, Ljava/util/concurrent/TimeUnit;->NANOSECONDS:Ljava/util/concurrent/TimeUnit;
invoke-virtual {v1, p0, v2, v3, v4}, Lrx/Scheduler$Worker;->schedule(Lrx/functions/Action0;JLjava/util/concurrent/TimeUnit;)Lrx/Subscription;
move-result-object v1
invoke-virtual {v0, v1}, Lrx/internal/subscriptions/SequentialSubscription;->replace(Lrx/Subscription;)Z
:cond_62
return-void
.end method