MultiplexProducer.smali
.class public abstract Lcom/facebook/imagepipeline/producers/MultiplexProducer;
.super Ljava/lang/Object;
.source "MultiplexProducer.java"
# interfaces
.implements Lcom/facebook/imagepipeline/producers/Producer;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"<K:",
"Ljava/lang/Object;",
"T::",
"Ljava/io/Closeable;",
">",
"Ljava/lang/Object;",
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;"
}
.end annotation
# static fields
.field public static final EXTRAS_STARTED_AS_PREFETCH:Ljava/lang/String; = "started_as_prefetch"
# instance fields
.field private final mDedupedRequestsCountKey:Ljava/lang/String;
.field private final mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;"
}
.end annotation
.end field
.field private final mKeepCancelledFetchAsLowPriority:Z
.field final mMultiplexers:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"TK;",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;>;"
}
.end annotation
.end field
.field private final mProducerName:Ljava/lang/String;
# direct methods
.method protected constructor <init>(Lcom/facebook/imagepipeline/producers/Producer;Ljava/lang/String;Ljava/lang/String;)V
.registers 5
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0
}
names = {
"inputProducer",
"producerName",
"dedupedRequestsCountKey"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;",
"Ljava/lang/String;",
"Ljava/lang/String;",
")V"
}
.end annotation
const/4 v0, 0x0
.line 71
invoke-direct {p0, p1, p2, p3, v0}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;-><init>(Lcom/facebook/imagepipeline/producers/Producer;Ljava/lang/String;Ljava/lang/String;Z)V
return-void
.end method
.method protected constructor <init>(Lcom/facebook/imagepipeline/producers/Producer;Ljava/lang/String;Ljava/lang/String;Z)V
.registers 5
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0,
0x0,
0x0
}
names = {
"inputProducer",
"producerName",
"dedupedRequestsCountKey",
"keepCancelledFetchAsLowPriority"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;",
"Ljava/lang/String;",
"Ljava/lang/String;",
"Z)V"
}
.end annotation
.line 78
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 79
iput-object p1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
.line 80
new-instance p1, Ljava/util/HashMap;
invoke-direct {p1}, Ljava/util/HashMap;-><init>()V
iput-object p1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
.line 81
iput-boolean p4, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mKeepCancelledFetchAsLowPriority:Z
.line 82
iput-object p2, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mProducerName:Ljava/lang/String;
.line 83
iput-object p3, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mDedupedRequestsCountKey:Ljava/lang/String;
return-void
.end method
.method static synthetic access$1000(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Ljava/lang/String;
.registers 1
.line 42
iget-object p0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mDedupedRequestsCountKey:Ljava/lang/String;
return-object p0
.end method
.method static synthetic access$600(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Z
.registers 1
.line 42
iget-boolean p0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mKeepCancelledFetchAsLowPriority:Z
return p0
.end method
.method static synthetic access$800(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Lcom/facebook/imagepipeline/producers/Producer;
.registers 1
.line 42
iget-object p0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
return-object p0
.end method
.method static synthetic access$900(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Ljava/lang/String;
.registers 1
.line 42
iget-object p0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mProducerName:Ljava/lang/String;
return-object p0
.end method
.method private declared-synchronized createAndPutNewMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"key"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;"
}
.end annotation
monitor-enter p0
.line 132
:try_start_1
new-instance v0, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
invoke-direct {v0, p0, p1}, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;-><init>(Lcom/facebook/imagepipeline/producers/MultiplexProducer;Ljava/lang/Object;)V
.line 133
iget-object v1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {v1, p1, v0}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
:try_end_b
.catchall {:try_start_1 .. :try_end_b} :catchall_d
.line 134
monitor-exit p0
return-object v0
:catchall_d
move-exception p1
monitor-exit p0
throw p1
.end method
# virtual methods
.method protected abstract cloneOrNull(Ljava/io/Closeable;)Ljava/io/Closeable;
.param p1 # Ljava/io/Closeable;
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end param
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"object"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)TT;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
.end method
.method protected declared-synchronized getExistingMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
.registers 3
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"key"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;"
}
.end annotation
.annotation runtime Ljavax/annotation/Nullable;
.end annotation
monitor-enter p0
.line 128
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
:try_end_9
.catchall {:try_start_1 .. :try_end_9} :catchall_b
monitor-exit p0
return-object p1
:catchall_b
move-exception p1
monitor-exit p0
throw p1
.end method
.method protected abstract getKey(Lcom/facebook/imagepipeline/producers/ProducerContext;)Ljava/lang/Object;
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0
}
names = {
"producerContext"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/ProducerContext;",
")TK;"
}
.end annotation
.end method
.method public produceResults(Lcom/facebook/imagepipeline/producers/Consumer;Lcom/facebook/imagepipeline/producers/ProducerContext;)V
.registers 7
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"consumer",
"context"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Consumer<",
"TT;>;",
"Lcom/facebook/imagepipeline/producers/ProducerContext;",
")V"
}
.end annotation
.line 89
:try_start_0
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result v0
if-eqz v0, :cond_b
const-string v0, "MultiplexProducer#produceResults"
.line 90
invoke-static {v0}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->beginSection(Ljava/lang/String;)V
.line 93
:cond_b
invoke-interface {p2}, Lcom/facebook/imagepipeline/producers/ProducerContext;->getProducerListener()Lcom/facebook/imagepipeline/producers/ProducerListener2;
move-result-object v0
iget-object v1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mProducerName:Ljava/lang/String;
invoke-interface {v0, p2, v1}, Lcom/facebook/imagepipeline/producers/ProducerListener2;->onProducerStart(Lcom/facebook/imagepipeline/producers/ProducerContext;Ljava/lang/String;)V
.line 95
invoke-virtual {p0, p2}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->getKey(Lcom/facebook/imagepipeline/producers/ProducerContext;)Ljava/lang/Object;
move-result-object v0
:cond_18
const/4 v1, 0x0
.line 104
monitor-enter p0
:try_end_1a
.catchall {:try_start_0 .. :try_end_1a} :catchall_46
.line 105
:try_start_1a
invoke-virtual {p0, v0}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->getExistingMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
move-result-object v2
if-nez v2, :cond_25
.line 107
invoke-direct {p0, v0}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->createAndPutNewMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
move-result-object v2
const/4 v1, 0x1
.line 110
:cond_25
monitor-exit p0
:try_end_26
.catchall {:try_start_1a .. :try_end_26} :catchall_43
.line 114
:try_start_26
invoke-virtual {v2, p1, p2}, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->addNewConsumer(Lcom/facebook/imagepipeline/producers/Consumer;Lcom/facebook/imagepipeline/producers/ProducerContext;)Z
move-result v3
if-eqz v3, :cond_18
if-eqz v1, :cond_39
.line 118
invoke-interface {p2}, Lcom/facebook/imagepipeline/producers/ProducerContext;->isPrefetch()Z
move-result p1
invoke-static {p1}, Lcom/facebook/common/util/TriState;->valueOf(Z)Lcom/facebook/common/util/TriState;
move-result-object p1
.line 117
# invokes: Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->startInputProducerIfHasAttachedConsumers(Lcom/facebook/common/util/TriState;)V
invoke-static {v2, p1}, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->access$000(Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;Lcom/facebook/common/util/TriState;)V
:try_end_39
.catchall {:try_start_26 .. :try_end_39} :catchall_46
.line 121
:cond_39
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result p1
if-eqz p1, :cond_42
.line 122
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->endSection()V
:cond_42
return-void
:catchall_43
move-exception p1
.line 110
:try_start_44
monitor-exit p0
:try_end_45
.catchall {:try_start_44 .. :try_end_45} :catchall_43
:try_start_45
throw p1
:try_end_46
.catchall {:try_start_45 .. :try_end_46} :catchall_46
:catchall_46
move-exception p1
.line 121
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result p2
if-eqz p2, :cond_50
.line 122
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->endSection()V
.line 124
:cond_50
throw p1
.end method
.method protected declared-synchronized removeMultiplexer(Ljava/lang/Object;Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;)V
.registers 4
.annotation system Ldalvik/annotation/MethodParameters;
accessFlags = {
0x0,
0x0
}
names = {
"key",
"multiplexer"
}
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;)V"
}
.end annotation
monitor-enter p0
.line 138
:try_start_1
iget-object v0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
if-ne v0, p2, :cond_e
.line 139
iget-object p2, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mMultiplexers:Ljava/util/Map;
invoke-interface {p2, p1}, Ljava/util/Map;->remove(Ljava/lang/Object;)Ljava/lang/Object;
:try_end_e
.catchall {:try_start_1 .. :try_end_e} :catchall_10
.line 141
:cond_e
monitor-exit p0
return-void
:catchall_10
move-exception p1
monitor-exit p0
throw p1
.end method