c.smali
.class public Ld0/c;
.super Ljava/lang/Thread;
.source "CacheDispatcher.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Ld0/c$b;
}
.end annotation
# static fields
.field public static final g:Z
# instance fields
.field public final a:Ljava/util/concurrent/BlockingQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/BlockingQueue<",
"Lcom/android/volley/Request<",
"*>;>;"
}
.end annotation
.end field
.field public final b:Ljava/util/concurrent/BlockingQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/BlockingQueue<",
"Lcom/android/volley/Request<",
"*>;>;"
}
.end annotation
.end field
.field public final c:Ld0/b;
.field public final d:Ld0/p;
.field public volatile e:Z
.field public final f:Ld0/c$b;
# direct methods
.method public static constructor <clinit>()V
.registers 1
sget-boolean v0, Ld0/u;->b:Z
sput-boolean v0, Ld0/c;->g:Z
return-void
.end method
.method public constructor <init>(Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/BlockingQueue;Ld0/b;Ld0/p;)V
.registers 6
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/concurrent/BlockingQueue<",
"Lcom/android/volley/Request<",
"*>;>;",
"Ljava/util/concurrent/BlockingQueue<",
"Lcom/android/volley/Request<",
"*>;>;",
"Ld0/b;",
"Ld0/p;",
")V"
}
.end annotation
invoke-direct {p0}, Ljava/lang/Thread;-><init>()V
const/4 v0, 0x0
iput-boolean v0, p0, Ld0/c;->e:Z
iput-object p1, p0, Ld0/c;->a:Ljava/util/concurrent/BlockingQueue;
iput-object p2, p0, Ld0/c;->b:Ljava/util/concurrent/BlockingQueue;
iput-object p3, p0, Ld0/c;->c:Ld0/b;
iput-object p4, p0, Ld0/c;->d:Ld0/p;
new-instance p1, Ld0/c$b;
invoke-direct {p1, p0}, Ld0/c$b;-><init>(Ld0/c;)V
iput-object p1, p0, Ld0/c;->f:Ld0/c$b;
return-void
.end method
.method public static synthetic a(Ld0/c;)Ljava/util/concurrent/BlockingQueue;
.registers 1
iget-object p0, p0, Ld0/c;->b:Ljava/util/concurrent/BlockingQueue;
return-object p0
.end method
.method public static synthetic b(Ld0/c;)Ld0/p;
.registers 1
iget-object p0, p0, Ld0/c;->d:Ld0/p;
return-object p0
.end method
# virtual methods
.method public final a()V
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/InterruptedException;
}
.end annotation
iget-object v0, p0, Ld0/c;->a:Ljava/util/concurrent/BlockingQueue;
invoke-interface {v0}, Ljava/util/concurrent/BlockingQueue;->take()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/android/volley/Request;
invoke-virtual {p0, v0}, Ld0/c;->a(Lcom/android/volley/Request;)V
return-void
.end method
.method public a(Lcom/android/volley/Request;)V
.registers 6
.annotation build Landroidx/annotation/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/android/volley/Request<",
"*>;)V"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/InterruptedException;
}
.end annotation
const-string v0, "cache-queue-take"
invoke-virtual {p1, v0}, Lcom/android/volley/Request;->addMarker(Ljava/lang/String;)V
invoke-virtual {p1}, Lcom/android/volley/Request;->isCanceled()Z
move-result v0
if-eqz v0, :cond_11
const-string v0, "cache-discard-canceled"
invoke-virtual {p1, v0}, Lcom/android/volley/Request;->finish(Ljava/lang/String;)V
return-void
:cond_11
iget-object v0, p0, Ld0/c;->c:Ld0/b;
invoke-virtual {p1}, Lcom/android/volley/Request;->getCacheKey()Ljava/lang/String;
move-result-object v1
invoke-interface {v0, v1}, Ld0/b;->get(Ljava/lang/String;)Ld0/b$a;
move-result-object v0
if-nez v0, :cond_30
const-string v0, "cache-miss"
invoke-virtual {p1, v0}, Lcom/android/volley/Request;->addMarker(Ljava/lang/String;)V
iget-object v0, p0, Ld0/c;->f:Ld0/c$b;
invoke-static {v0, p1}, Ld0/c$b;->a(Ld0/c$b;Lcom/android/volley/Request;)Z
move-result v0
if-nez v0, :cond_2f
iget-object v0, p0, Ld0/c;->b:Ljava/util/concurrent/BlockingQueue;
invoke-interface {v0, p1}, Ljava/util/concurrent/BlockingQueue;->put(Ljava/lang/Object;)V
:cond_2f
return-void
:cond_30
invoke-virtual {v0}, Ld0/b$a;->a()Z
move-result v1
if-eqz v1, :cond_4c
const-string v1, "cache-hit-expired"
invoke-virtual {p1, v1}, Lcom/android/volley/Request;->addMarker(Ljava/lang/String;)V
invoke-virtual {p1, v0}, Lcom/android/volley/Request;->setCacheEntry(Ld0/b$a;)Lcom/android/volley/Request;
iget-object v0, p0, Ld0/c;->f:Ld0/c$b;
invoke-static {v0, p1}, Ld0/c$b;->a(Ld0/c$b;Lcom/android/volley/Request;)Z
move-result v0
if-nez v0, :cond_4b
iget-object v0, p0, Ld0/c;->b:Ljava/util/concurrent/BlockingQueue;
invoke-interface {v0, p1}, Ljava/util/concurrent/BlockingQueue;->put(Ljava/lang/Object;)V
:cond_4b
return-void
:cond_4c
const-string v1, "cache-hit"
invoke-virtual {p1, v1}, Lcom/android/volley/Request;->addMarker(Ljava/lang/String;)V
new-instance v1, Ld0/k;
iget-object v2, v0, Ld0/b$a;->a:[B
iget-object v3, v0, Ld0/b$a;->g:Ljava/util/Map;
invoke-direct {v1, v2, v3}, Ld0/k;-><init>([BLjava/util/Map;)V
invoke-virtual {p1, v1}, Lcom/android/volley/Request;->parseNetworkResponse(Ld0/k;)Ld0/o;
move-result-object v1
const-string v2, "cache-hit-parsed"
invoke-virtual {p1, v2}, Lcom/android/volley/Request;->addMarker(Ljava/lang/String;)V
invoke-virtual {v0}, Ld0/b$a;->b()Z
move-result v2
if-nez v2, :cond_6f
iget-object v0, p0, Ld0/c;->d:Ld0/p;
invoke-interface {v0, p1, v1}, Ld0/p;->a(Lcom/android/volley/Request;Ld0/o;)V
goto :goto_92
:cond_6f
const-string v2, "cache-hit-refresh-needed"
invoke-virtual {p1, v2}, Lcom/android/volley/Request;->addMarker(Ljava/lang/String;)V
invoke-virtual {p1, v0}, Lcom/android/volley/Request;->setCacheEntry(Ld0/b$a;)Lcom/android/volley/Request;
const/4 v0, 0x1
iput-boolean v0, v1, Ld0/o;->d:Z
iget-object v0, p0, Ld0/c;->f:Ld0/c$b;
invoke-static {v0, p1}, Ld0/c$b;->a(Ld0/c$b;Lcom/android/volley/Request;)Z
move-result v0
if-nez v0, :cond_8d
iget-object v0, p0, Ld0/c;->d:Ld0/p;
new-instance v2, Ld0/c$a;
invoke-direct {v2, p0, p1}, Ld0/c$a;-><init>(Ld0/c;Lcom/android/volley/Request;)V
invoke-interface {v0, p1, v1, v2}, Ld0/p;->a(Lcom/android/volley/Request;Ld0/o;Ljava/lang/Runnable;)V
goto :goto_92
:cond_8d
iget-object v0, p0, Ld0/c;->d:Ld0/p;
invoke-interface {v0, p1, v1}, Ld0/p;->a(Lcom/android/volley/Request;Ld0/o;)V
:goto_92
return-void
.end method
.method public b()V
.registers 2
const/4 v0, 0x1
iput-boolean v0, p0, Ld0/c;->e:Z
invoke-virtual {p0}, Ljava/lang/Thread;->interrupt()V
return-void
.end method
.method public run()V
.registers 4
sget-boolean v0, Ld0/c;->g:Z
const/4 v1, 0x0
if-eqz v0, :cond_d
new-array v0, v1, [Ljava/lang/Object;
const-string/jumbo v2, "start new dispatcher"
invoke-static {v2, v0}, Ld0/u;->d(Ljava/lang/String;[Ljava/lang/Object;)V
:cond_d
const/16 v0, 0xa
invoke-static {v0}, Landroid/os/Process;->setThreadPriority(I)V
iget-object v0, p0, Ld0/c;->c:Ld0/b;
invoke-interface {v0}, Ld0/b;->initialize()V
:goto_17
:try_start_17
invoke-virtual {p0}, Ld0/c;->a()V
:try_end_1a
.catch Ljava/lang/InterruptedException; {:try_start_17 .. :try_end_1a} :catch_1b
goto :goto_17
:catch_1b
iget-boolean v0, p0, Ld0/c;->e:Z
if-eqz v0, :cond_27
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->interrupt()V
return-void
:cond_27
new-array v0, v1, [Ljava/lang/Object;
const-string v2, "Ignoring spurious interrupt of CacheDispatcher thread; use quit() to terminate it"
invoke-static {v2, v0}, Ld0/u;->c(Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_17
.end method