m.smali
.class public final Lio/reactivex/internal/schedulers/m;
.super Ljava/lang/Object;
.source "SchedulerPoolFactory.java"
# static fields
.field private static bSK:Z
.field private static bSL:I
.field private static bSM:Ljava/util/concurrent/atomic/AtomicReference;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/atomic/AtomicReference",
"<",
"Ljava/util/concurrent/ScheduledExecutorService;",
">;"
}
.end annotation
.end field
.field static final bSN:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map",
"<",
"Ljava/util/concurrent/ScheduledThreadPoolExecutor;",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 4
.prologue
const/4 v0, 0x1
.line 48
new-instance v1, Ljava/util/concurrent/atomic/AtomicReference;
invoke-direct {v1}, Ljava/util/concurrent/atomic/AtomicReference;-><init>()V
sput-object v1, Lio/reactivex/internal/schedulers/m;->bSM:Ljava/util/concurrent/atomic/AtomicReference;
.line 53
new-instance v1, Ljava/util/concurrent/ConcurrentHashMap;
invoke-direct {v1}, Ljava/util/concurrent/ConcurrentHashMap;-><init>()V
sput-object v1, Lio/reactivex/internal/schedulers/m;->bSN:Ljava/util/Map;
.line 95
invoke-static {}, Ljava/lang/System;->getProperties()Ljava/util/Properties;
move-result-object v2
.line 97
const-string v1, "rx2.purge-enabled"
invoke-virtual {v2, v1}, Ljava/util/Properties;->containsKey(Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_3d
.line 98
const-string v1, "rx2.purge-enabled"
invoke-static {v1}, Ljava/lang/Boolean;->getBoolean(Ljava/lang/String;)Z
move-result v1
.line 101
:goto_21
if-eqz v1, :cond_35
const-string v3, "rx2.purge-period-seconds"
invoke-virtual {v2, v3}, Ljava/util/Properties;->containsKey(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_35
.line 102
const-string v2, "rx2.purge-period-seconds"
invoke-static {v2, v0}, Ljava/lang/Integer;->getInteger(Ljava/lang/String;I)Ljava/lang/Integer;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Integer;->intValue()I
move-result v0
.line 105
:cond_35
sput-boolean v1, Lio/reactivex/internal/schedulers/m;->bSK:Z
.line 106
sput v0, Lio/reactivex/internal/schedulers/m;->bSL:I
.line 108
invoke-static {}, Lio/reactivex/internal/schedulers/m;->start()V
.line 109
return-void
:cond_3d
move v1, v0
goto :goto_21
.end method
.method public static a(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
.registers 4
.prologue
.line 117
const/4 v0, 0x1
invoke-static {v0, p0}, Ljava/util/concurrent/Executors;->newScheduledThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
move-result-object v1
.line 118
sget-boolean v0, Lio/reactivex/internal/schedulers/m;->bSK:Z
if-eqz v0, :cond_15
instance-of v0, v1, Ljava/util/concurrent/ScheduledThreadPoolExecutor;
if-eqz v0, :cond_15
move-object v0, v1
.line 119
check-cast v0, Ljava/util/concurrent/ScheduledThreadPoolExecutor;
.line 120
sget-object v2, Lio/reactivex/internal/schedulers/m;->bSN:Ljava/util/Map;
invoke-interface {v2, v0, v1}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 122
:cond_15
return-object v1
.end method
.method private static start()V
.registers 7
.prologue
.line 60
sget-boolean v0, Lio/reactivex/internal/schedulers/m;->bSK:Z
if-nez v0, :cond_8
.line 73
:cond_4
:goto_4
return-void
.line 75
:cond_5
invoke-interface {v0}, Ljava/util/concurrent/ScheduledExecutorService;->shutdownNow()Ljava/util/List;
.line 64
:cond_8
sget-object v0, Lio/reactivex/internal/schedulers/m;->bSM:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicReference;->get()Ljava/lang/Object;
move-result-object v0
move-object v1, v0
check-cast v1, Ljava/util/concurrent/ScheduledExecutorService;
.line 65
if-eqz v1, :cond_19
invoke-interface {v1}, Ljava/util/concurrent/ScheduledExecutorService;->isShutdown()Z
move-result v0
if-eqz v0, :cond_4
.line 68
:cond_19
const/4 v0, 0x1
new-instance v2, Lio/reactivex/internal/schedulers/RxThreadFactory;
const-string v3, "RxSchedulerPurge"
invoke-direct {v2, v3}, Lio/reactivex/internal/schedulers/RxThreadFactory;-><init>(Ljava/lang/String;)V
invoke-static {v0, v2}, Ljava/util/concurrent/Executors;->newScheduledThreadPool(ILjava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
move-result-object v0
.line 69
sget-object v2, Lio/reactivex/internal/schedulers/m;->bSM:Ljava/util/concurrent/atomic/AtomicReference;
invoke-virtual {v2, v1, v0}, Ljava/util/concurrent/atomic/AtomicReference;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;)Z
move-result v1
if-eqz v1, :cond_5
.line 71
new-instance v1, Lio/reactivex/internal/schedulers/n;
invoke-direct {v1}, Lio/reactivex/internal/schedulers/n;-><init>()V
sget v2, Lio/reactivex/internal/schedulers/m;->bSL:I
int-to-long v2, v2
sget v4, Lio/reactivex/internal/schedulers/m;->bSL:I
int-to-long v4, v4
sget-object v6, Ljava/util/concurrent/TimeUnit;->SECONDS:Ljava/util/concurrent/TimeUnit;
invoke-interface/range {v0 .. v6}, Ljava/util/concurrent/ScheduledExecutorService;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
goto :goto_4
.end method