AsyncConsumerMap.smali

.class public Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;
.super Ljava/lang/Object;
.source "AsyncConsumerMap.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;,
        Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback;
    }
.end annotation

.annotation system Ldalvik/annotation/Signature;
    value = {
        "<K:",
        "Ljava/lang/Object;",
        "V:",
        "Ljava/lang/Object;",
        ">",
        "Ljava/lang/Object;"
    }
.end annotation


# instance fields
.field private final mCallback:Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback",
            "<TK;TV;>;"
        }
    .end annotation
.end field

.field private mConsumerThread:Ljava/lang/Thread;

.field private final mKeyQueue:Ljava/util/Queue;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Queue",
            "<TK;>;"
        }
    .end annotation
.end field

.field private final mLock:Ljava/lang/Object;

.field private final mProductMap:Ljava/util/Map;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/Map",
            "<TK;TV;>;"
        }
    .end annotation
.end field

.field private final mWaitTime:I


# direct methods
.method private constructor <init>(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;)V
    .registers 3
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(",
            "Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder",
            "<TK;TV;>;)V"
        }
    .end annotation

    .prologue
    .line 107
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 113
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mConsumerThread:Ljava/lang/Thread;

    .line 114
    new-instance v0, Ljava/lang/Object;

    invoke-direct {v0}, Ljava/lang/Object;-><init>()V

    iput-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mLock:Ljava/lang/Object;

    .line 115
    new-instance v0, Ljava/util/LinkedList;

    invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V

    iput-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mKeyQueue:Ljava/util/Queue;

    .line 116
    new-instance v0, Lcom/cleanmaster/bitloader/base/ArrayMap;

    invoke-direct {v0}, Lcom/cleanmaster/bitloader/base/ArrayMap;-><init>()V

    iput-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mProductMap:Ljava/util/Map;

    .line 108
    # getter for: Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;->mWaitTime:I
    invoke-static {p1}, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;->access$700(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;)I

    move-result v0

    iput v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mWaitTime:I

    .line 109
    # getter for: Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;->mCallback:Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback;
    invoke-static {p1}, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;->access$800(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;)Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback;

    move-result-object v0

    iput-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mCallback:Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback;

    .line 110
    return-void
.end method

.method synthetic constructor <init>(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$1;)V
    .registers 3

    .prologue
    .line 11
    invoke-direct {p0, p1}, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;-><init>(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$Builder;)V

    return-void
.end method

.method static synthetic access$100(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;)Ljava/lang/Object;
    .registers 2

    .prologue
    .line 11
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mLock:Ljava/lang/Object;

    return-object v0
.end method

.method static synthetic access$200(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;)Ljava/util/Queue;
    .registers 2

    .prologue
    .line 11
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mKeyQueue:Ljava/util/Queue;

    return-object v0
.end method

.method static synthetic access$300(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;)I
    .registers 2

    .prologue
    .line 11
    iget v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mWaitTime:I

    return v0
.end method

.method static synthetic access$402(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;Ljava/lang/Thread;)Ljava/lang/Thread;
    .registers 2

    .prologue
    .line 11
    iput-object p1, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mConsumerThread:Ljava/lang/Thread;

    return-object p1
.end method

.method static synthetic access$500(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;)Ljava/util/Map;
    .registers 2

    .prologue
    .line 11
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mProductMap:Ljava/util/Map;

    return-object v0
.end method

.method static synthetic access$600(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;)Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback;
    .registers 2

    .prologue
    .line 11
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mCallback:Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$ConsumerCallback;

    return-object v0
.end method

.method private createThread()V
    .registers 2

    .prologue
    .line 70
    new-instance v0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$1;

    invoke-direct {v0, p0}, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap$1;-><init>(Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;)V

    iput-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mConsumerThread:Ljava/lang/Thread;

    .line 104
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mConsumerThread:Ljava/lang/Thread;

    invoke-virtual {v0}, Ljava/lang/Thread;->start()V

    .line 105
    return-void
.end method


# virtual methods
.method public addProduct(Ljava/lang/Object;Ljava/lang/Object;)V
    .registers 5
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "(TK;TV;)V"
        }
    .end annotation

    .prologue
    .line 43
    if-eqz p1, :cond_4

    if-nez p2, :cond_5

    .line 58
    :cond_4
    :goto_4
    return-void

    .line 47
    :cond_5
    iget-object v1, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mLock:Ljava/lang/Object;

    monitor-enter v1

    .line 48
    :try_start_8
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mKeyQueue:Ljava/util/Queue;

    invoke-interface {v0, p1}, Ljava/util/Queue;->contains(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_15

    .line 49
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mKeyQueue:Ljava/util/Queue;

    invoke-interface {v0, p1}, Ljava/util/Queue;->offer(Ljava/lang/Object;)Z

    .line 51
    :cond_15
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mProductMap:Ljava/util/Map;

    invoke-interface {v0, p1, p2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;

    .line 52
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mConsumerThread:Ljava/lang/Thread;

    if-nez v0, :cond_21

    .line 53
    invoke-direct {p0}, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->createThread()V

    .line 56
    :cond_21
    iget-object v0, p0, Lcom/cleanmaster/base/util/concurrent/AsyncConsumerMap;->mLock:Ljava/lang/Object;

    invoke-virtual {v0}, Ljava/lang/Object;->notify()V

    .line 57
    monitor-exit v1

    goto :goto_4

    :catchall_28
    move-exception v0

    monitor-exit v1
    :try_end_2a
    .catchall {:try_start_8 .. :try_end_2a} :catchall_28

    throw v0
.end method