ExponentialBackoffSender.smali
.class public Lcom/google/firebase/storage/internal/ExponentialBackoffSender;
.super Ljava/lang/Object;
# static fields
.field private static final e:Ljava/util/Random;
.field static f:Lcom/google/firebase/storage/internal/Sleeper;
.field static g:Lcom/google/android/gms/common/util/Clock;
# instance fields
.field private final a:Landroid/content/Context;
.field private final b:Lcom/google/firebase/auth/internal/InternalAuthProvider;
.field private c:J
.field private volatile d:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
new-instance v0, Ljava/util/Random;
invoke-direct {v0}, Ljava/util/Random;-><init>()V
sput-object v0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->e:Ljava/util/Random;
new-instance v0, Lcom/google/firebase/storage/internal/SleeperImpl;
invoke-direct {v0}, Lcom/google/firebase/storage/internal/SleeperImpl;-><init>()V
sput-object v0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->f:Lcom/google/firebase/storage/internal/Sleeper;
invoke-static {}, Lcom/google/android/gms/common/util/DefaultClock;->d()Lcom/google/android/gms/common/util/Clock;
move-result-object v0
sput-object v0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->g:Lcom/google/android/gms/common/util/Clock;
return-void
.end method
.method public constructor <init>(Landroid/content/Context;Lcom/google/firebase/auth/internal/InternalAuthProvider;J)V
.registers 5
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->a:Landroid/content/Context;
iput-object p2, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->b:Lcom/google/firebase/auth/internal/InternalAuthProvider;
iput-wide p3, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->c:J
return-void
.end method
# virtual methods
.method public a()V
.registers 2
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->d:Z
return-void
.end method
.method public b(I)Z
.registers 3
const/16 v0, 0x1f4
if-lt p1, v0, :cond_8
const/16 v0, 0x258
if-lt p1, v0, :cond_16
:cond_8
const/4 v0, -0x2
if-eq p1, v0, :cond_16
const/16 v0, 0x1ad
if-eq p1, v0, :cond_16
const/16 v0, 0x198
if-ne p1, v0, :cond_14
goto :goto_16
:cond_14
const/4 p1, 0x0
goto :goto_17
:cond_16
:goto_16
const/4 p1, 0x1
:goto_17
return p1
.end method
.method public c()V
.registers 2
const/4 v0, 0x0
iput-boolean v0, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->d:Z
return-void
.end method
.method public d(Lcom/google/firebase/storage/network/NetworkRequest;)V
.registers 3
const/4 v0, 0x1
invoke-virtual {p0, p1, v0}, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->e(Lcom/google/firebase/storage/network/NetworkRequest;Z)V
return-void
.end method
.method public e(Lcom/google/firebase/storage/network/NetworkRequest;Z)V
.registers 12
const-string v0, "ExponenentialBackoff"
invoke-static {p1}, Lcom/google/android/gms/common/internal/Preconditions;->k(Ljava/lang/Object;)Ljava/lang/Object;
sget-object v1, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->g:Lcom/google/android/gms/common/util/Clock;
invoke-interface {v1}, Lcom/google/android/gms/common/util/Clock;->c()J
move-result-wide v1
iget-wide v3, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->c:J
add-long/2addr v1, v3
if-eqz p2, :cond_1c
iget-object v3, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->b:Lcom/google/firebase/auth/internal/InternalAuthProvider;
invoke-static {v3}, Lcom/google/firebase/storage/internal/Util;->c(Lcom/google/firebase/auth/internal/InternalAuthProvider;)Ljava/lang/String;
move-result-object v3
iget-object v4, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->a:Landroid/content/Context;
invoke-virtual {p1, v3, v4}, Lcom/google/firebase/storage/network/NetworkRequest;->z(Ljava/lang/String;Landroid/content/Context;)V
goto :goto_25
:cond_1c
iget-object v3, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->b:Lcom/google/firebase/auth/internal/InternalAuthProvider;
invoke-static {v3}, Lcom/google/firebase/storage/internal/Util;->c(Lcom/google/firebase/auth/internal/InternalAuthProvider;)Ljava/lang/String;
move-result-object v3
invoke-virtual {p1, v3}, Lcom/google/firebase/storage/network/NetworkRequest;->B(Ljava/lang/String;)V
:goto_25
const/16 v3, 0x3e8
const/16 v4, 0x3e8
:goto_29
sget-object v5, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->g:Lcom/google/android/gms/common/util/Clock;
invoke-interface {v5}, Lcom/google/android/gms/common/util/Clock;->c()J
move-result-wide v5
int-to-long v7, v4
add-long/2addr v5, v7
cmp-long v7, v5, v1
if-gtz v7, :cond_99
invoke-virtual {p1}, Lcom/google/firebase/storage/network/NetworkRequest;->t()Z
move-result v5
if-nez v5, :cond_99
invoke-virtual {p1}, Lcom/google/firebase/storage/network/NetworkRequest;->p()I
move-result v5
invoke-virtual {p0, v5}, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->b(I)Z
move-result v5
if-eqz v5, :cond_99
:try_start_45
sget-object v5, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->f:Lcom/google/firebase/storage/internal/Sleeper;
sget-object v6, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->e:Ljava/util/Random;
const/16 v7, 0xfa
invoke-virtual {v6, v7}, Ljava/util/Random;->nextInt(I)I
move-result v6
add-int/2addr v6, v4
invoke-interface {v5, v6}, Lcom/google/firebase/storage/internal/Sleeper;->a(I)V
:try_end_53
.catch Ljava/lang/InterruptedException; {:try_start_45 .. :try_end_53} :catch_8d
const/16 v5, 0x7530
if-ge v4, v5, :cond_6d
invoke-virtual {p1}, Lcom/google/firebase/storage/network/NetworkRequest;->p()I
move-result v5
const/4 v6, -0x2
if-eq v5, v6, :cond_66
mul-int/lit8 v4, v4, 0x2
const-string v5, "network error occurred, backing off/sleeping."
invoke-static {v0, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
goto :goto_6d
:cond_66
const-string v4, "network unavailable, sleeping."
invoke-static {v0, v4}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
const/16 v4, 0x3e8
:cond_6d
:goto_6d
iget-boolean v5, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->d:Z
if-eqz v5, :cond_72
return-void
:cond_72
invoke-virtual {p1}, Lcom/google/firebase/storage/network/NetworkRequest;->D()V
if-eqz p2, :cond_83
iget-object v5, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->b:Lcom/google/firebase/auth/internal/InternalAuthProvider;
invoke-static {v5}, Lcom/google/firebase/storage/internal/Util;->c(Lcom/google/firebase/auth/internal/InternalAuthProvider;)Ljava/lang/String;
move-result-object v5
iget-object v6, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->a:Landroid/content/Context;
invoke-virtual {p1, v5, v6}, Lcom/google/firebase/storage/network/NetworkRequest;->z(Ljava/lang/String;Landroid/content/Context;)V
goto :goto_29
:cond_83
iget-object v5, p0, Lcom/google/firebase/storage/internal/ExponentialBackoffSender;->b:Lcom/google/firebase/auth/internal/InternalAuthProvider;
invoke-static {v5}, Lcom/google/firebase/storage/internal/Util;->c(Lcom/google/firebase/auth/internal/InternalAuthProvider;)Ljava/lang/String;
move-result-object v5
invoke-virtual {p1, v5}, Lcom/google/firebase/storage/network/NetworkRequest;->B(Ljava/lang/String;)V
goto :goto_29
:catch_8d
const-string p1, "thread interrupted during exponential backoff."
invoke-static {v0, p1}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object p1
invoke-virtual {p1}, Ljava/lang/Thread;->interrupt()V
:cond_99
return-void
.end method