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
.annotation build Ljavax/annotation/concurrent/ThreadSafe;
.end annotation
# instance fields
.field public final mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;"
}
.end annotation
.end field
.field public final mKeepCancelledFetchAsLowPriority:Z
.field public final mMultiplexers:Ljava/util/Map;
.annotation build Lcom/facebook/common/internal/VisibleForTesting;
.end annotation
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"TK;",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;>;"
}
.end annotation
.annotation build Ljavax/annotation/concurrent/GuardedBy;
value = "this"
.end annotation
.end field
.field public final mProducerName:Ljava/lang/String;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>(Lcom/facebook/imagepipeline/producers/Producer;Ljava/lang/String;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;",
"Ljava/lang/String;",
")V"
}
.end annotation
const/4 v0, 0x0
invoke-direct {p0, p1, p2, v0}, Lcom/facebook/imagepipeline/producers/MultiplexProducer;-><init>(Lcom/facebook/imagepipeline/producers/Producer;Ljava/lang/String;Z)V
return-void
.end method
.method public constructor <init>(Lcom/facebook/imagepipeline/producers/Producer;Ljava/lang/String;Z)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Producer<",
"TT;>;",
"Ljava/lang/String;",
"Z)V"
}
.end annotation
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
iput-object p1, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
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;
iput-boolean p3, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mKeepCancelledFetchAsLowPriority:Z
iput-object p2, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mProducerName:Ljava/lang/String;
return-void
.end method
.method public static synthetic access$600(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Z
.registers 1
iget-boolean p0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mKeepCancelledFetchAsLowPriority:Z
return p0
.end method
.method public static synthetic access$800(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Lcom/facebook/imagepipeline/producers/Producer;
.registers 1
iget-object p0, p0, Lcom/facebook/imagepipeline/producers/MultiplexProducer;->mInputProducer:Lcom/facebook/imagepipeline/producers/Producer;
return-object p0
.end method
.method public static synthetic access$900(Lcom/facebook/imagepipeline/producers/MultiplexProducer;)Ljava/lang/String;
.registers 1
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/Signature;
value = {
"(TK;)",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;"
}
.end annotation
monitor-enter p0
: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
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
monitor-exit p0
return-object v0
:catchall_d
move-exception p1
monitor-exit p0
throw p1
.end method
# virtual methods
.method public abstract cloneOrNull(Ljava/io/Closeable;)Ljava/io/Closeable;
.annotation system Ldalvik/annotation/Signature;
value = {
"(TT;)TT;"
}
.end annotation
.end method
.method public declared-synchronized getExistingMultiplexer(Ljava/lang/Object;)Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;)",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;"
}
.end annotation
monitor-enter p0
: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 public abstract getKey(Lcom/facebook/imagepipeline/producers/ProducerContext;)Ljava/lang/Object;
.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/Signature;
value = {
"(",
"Lcom/facebook/imagepipeline/producers/Consumer<",
"TT;>;",
"Lcom/facebook/imagepipeline/producers/ProducerContext;",
")V"
}
.end annotation
: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"
invoke-static {v0}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->beginSection(Ljava/lang/String;)V
: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
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
monitor-enter p0
:try_end_1a
.catchall {:try_start_0 .. :try_end_1a} :catchall_3e
: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
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
:cond_25
monitor-exit p0
:try_end_26
.catchall {:try_start_1a .. :try_end_26} :catchall_3b
: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_31
# invokes: Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->startInputProducerIfHasAttachedConsumers()V
invoke-static {v2}, Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;->access$000(Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;)V
:try_end_31
.catchall {:try_start_26 .. :try_end_31} :catchall_3e
:cond_31
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result p1
if-eqz p1, :cond_3a
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->endSection()V
:cond_3a
return-void
:catchall_3b
move-exception p1
:try_start_3c
monitor-exit p0
:try_end_3d
.catchall {:try_start_3c .. :try_end_3d} :catchall_3b
:try_start_3d
throw p1
:try_end_3e
.catchall {:try_start_3d .. :try_end_3e} :catchall_3e
:catchall_3e
move-exception p1
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->isTracing()Z
move-result p2
if-eqz p2, :cond_48
invoke-static {}, Lcom/facebook/imagepipeline/systrace/FrescoSystrace;->endSection()V
:cond_48
goto :goto_4a
:goto_49
throw p1
:goto_4a
goto :goto_49
.end method
.method public declared-synchronized removeMultiplexer(Ljava/lang/Object;Lcom/facebook/imagepipeline/producers/MultiplexProducer$Multiplexer;)V
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(TK;",
"Lcom/facebook/imagepipeline/producers/MultiplexProducer<",
"TK;TT;>.Multiplexer;)V"
}
.end annotation
monitor-enter p0
: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
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
:cond_e
monitor-exit p0
return-void
:catchall_10
move-exception p1
monitor-exit p0
throw p1
.end method