DownloadManager$DownloadThread.smali
.class Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;
.super Ljava/lang/Object;
.source "DownloadManager.java"
# interfaces
.implements Ljava/lang/Runnable;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/google/android/exoplayer2/offline/DownloadManager;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0xa
name = "DownloadThread"
.end annotation
# instance fields
.field private final callbackHandler:Landroid/os/Handler;
.field private final download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
.field private final downloader:Lcom/google/android/exoplayer2/offline/Downloader;
.field private volatile isCanceled:Z
.field private final minRetryCount:I
.field private final remove:Z
.field private final thread:Ljava/lang/Thread;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Lcom/google/android/exoplayer2/offline/Downloader;ZILandroid/os/Handler;)V
.registers 7
.param p1, "download" # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
.param p2, "downloader" # Lcom/google/android/exoplayer2/offline/Downloader;
.param p3, "remove" # Z
.param p4, "minRetryCount" # I
.param p5, "callbackHandler" # Landroid/os/Handler;
.line 712
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 713
iput-object p1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
.line 714
iput-object p2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;
.line 715
iput-boolean p3, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->remove:Z
.line 716
iput p4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->minRetryCount:I
.line 717
iput-object p5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->callbackHandler:Landroid/os/Handler;
.line 718
new-instance v0, Ljava/lang/Thread;
invoke-direct {v0, p0}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
iput-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->thread:Ljava/lang/Thread;
.line 719
invoke-virtual {v0}, Ljava/lang/Thread;->start()V
.line 720
return-void
.end method
.method synthetic constructor <init>(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Lcom/google/android/exoplayer2/offline/Downloader;ZILandroid/os/Handler;Lcom/google/android/exoplayer2/offline/DownloadManager$1;)V
.registers 7
.param p1, "x0" # Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
.param p2, "x1" # Lcom/google/android/exoplayer2/offline/Downloader;
.param p3, "x2" # Z
.param p4, "x3" # I
.param p5, "x4" # Landroid/os/Handler;
.param p6, "x5" # Lcom/google/android/exoplayer2/offline/DownloadManager$1;
.line 697
invoke-direct/range {p0 .. p5}, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Lcom/google/android/exoplayer2/offline/Downloader;ZILandroid/os/Handler;)V
return-void
.end method
.method static synthetic access$900(Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;)Z
.registers 2
.param p0, "x0" # Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;
.line 697
iget-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z
return v0
.end method
.method private getRetryDelayMillis(I)I
.registers 4
.param p1, "errorCount" # I
.line 769
add-int/lit8 v0, p1, -0x1
mul-int/lit16 v0, v0, 0x3e8
const/16 v1, 0x1388
invoke-static {v0, v1}, Ljava/lang/Math;->min(II)I
move-result v0
return v0
.end method
# virtual methods
.method public cancel()V
.registers 2
.line 723
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z
.line 724
iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;
invoke-interface {v0}, Lcom/google/android/exoplayer2/offline/Downloader;->cancel()V
.line 725
iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->thread:Ljava/lang/Thread;
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
.line 726
return-void
.end method
.method public synthetic lambda$run$0$DownloadManager$DownloadThread(Ljava/lang/Throwable;)V
.registers 4
.param p1, "finalError" # Ljava/lang/Throwable;
.line 765
iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
iget-boolean v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z
if-eqz v1, :cond_8
const/4 v1, 0x0
goto :goto_9
:cond_8
move-object v1, p1
:goto_9
# invokes: Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->onDownloadThreadStopped(Ljava/lang/Throwable;)V
invoke-static {v0, v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$Download;->access$1100(Lcom/google/android/exoplayer2/offline/DownloadManager$Download;Ljava/lang/Throwable;)V
return-void
.end method
.method public run()V
.registers 10
.line 732
iget-object v0, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
const-string v1, "Download is started"
# invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
invoke-static {v1, v0}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$1000(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
.line 733
const/4 v0, 0x0
.line 735
.local v0, "error":Ljava/lang/Throwable;
:try_start_8
iget-boolean v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->remove:Z
if-eqz v1, :cond_12
.line 736
iget-object v1, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;
invoke-interface {v1}, Lcom/google/android/exoplayer2/offline/Downloader;->remove()V
goto :goto_6e
.line 738
:cond_12
const/4 v1, 0x0
.line 739
.local v1, "errorCount":I
const-wide/16 v2, -0x1
.line 740
.local v2, "errorPosition":J
:goto_15
iget-boolean v4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z
:try_end_17
.catchall {:try_start_8 .. :try_end_17} :catchall_6f
if-nez v4, :cond_6e
.line 742
:try_start_19
iget-object v4, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;
invoke-interface {v4}, Lcom/google/android/exoplayer2/offline/Downloader;->download()V
:try_end_1e
.catch Ljava/io/IOException; {:try_start_19 .. :try_end_1e} :catch_1f
.catchall {:try_start_19 .. :try_end_1e} :catchall_6f
.line 743
goto :goto_6e
.line 744
:catch_1f
move-exception v4
.line 745
.local v4, "e":Ljava/io/IOException;
:try_start_20
iget-boolean v5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->isCanceled:Z
if-nez v5, :cond_6d
.line 746
iget-object v5, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->downloader:Lcom/google/android/exoplayer2/offline/Downloader;
invoke-interface {v5}, Lcom/google/android/exoplayer2/offline/Downloader;->getDownloadedBytes()J
move-result-wide v5
.line 747
.local v5, "downloadedBytes":J
cmp-long v7, v5, v2
if-eqz v7, :cond_46
.line 748
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const-string v8, "Reset error count. downloadedBytes = "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v5, v6}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
iget-object v8, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
# invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
invoke-static {v7, v8}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$1000(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
.line 749
move-wide v2, v5
.line 750
const/4 v1, 0x0
.line 752
:cond_46
add-int/lit8 v1, v1, 0x1
iget v7, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->minRetryCount:I
if-gt v1, v7, :cond_6b
.line 755
new-instance v7, Ljava/lang/StringBuilder;
invoke-direct {v7}, Ljava/lang/StringBuilder;-><init>()V
const-string v8, "Download error. Retry "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
iget-object v8, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->download:Lcom/google/android/exoplayer2/offline/DownloadManager$Download;
# invokes: Lcom/google/android/exoplayer2/offline/DownloadManager;->logd(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
invoke-static {v7, v8}, Lcom/google/android/exoplayer2/offline/DownloadManager;->access$1000(Ljava/lang/String;Lcom/google/android/exoplayer2/offline/DownloadManager$Download;)V
.line 756
invoke-direct {p0, v1}, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->getRetryDelayMillis(I)I
move-result v7
int-to-long v7, v7
invoke-static {v7, v8}, Ljava/lang/Thread;->sleep(J)V
goto :goto_6d
.line 753
:cond_6b
nop
.end local v0 # "error":Ljava/lang/Throwable;
throw v4
:try_end_6d
.catchall {:try_start_20 .. :try_end_6d} :catchall_6f
.line 758
.end local v4 # "e":Ljava/io/IOException;
.end local v5 # "downloadedBytes":J
.restart local v0 # "error":Ljava/lang/Throwable;
:cond_6d
:goto_6d
goto :goto_15
.line 763
.end local v1 # "errorCount":I
.end local v2 # "errorPosition":J
:cond_6e
:goto_6e
goto :goto_71
.line 761
:catchall_6f
move-exception v1
.line 762
.local v1, "e":Ljava/lang/Throwable;
move-object v0, v1
.line 764
.end local v1 # "e":Ljava/lang/Throwable;
:goto_71
move-object v1, v0
.line 765
.local v1, "finalError":Ljava/lang/Throwable;
iget-object v2, p0, Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;->callbackHandler:Landroid/os/Handler;
new-instance v3, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$DownloadThread$Tt02hURVEgn-zT94Ed18uLqgFZk;
invoke-direct {v3, p0, v1}, Lcom/google/android/exoplayer2/offline/-$$Lambda$DownloadManager$DownloadThread$Tt02hURVEgn-zT94Ed18uLqgFZk;-><init>(Lcom/google/android/exoplayer2/offline/DownloadManager$DownloadThread;Ljava/lang/Throwable;)V
invoke-virtual {v2, v3}, Landroid/os/Handler;->post(Ljava/lang/Runnable;)Z
.line 766
return-void
.end method