ConnectStateMonitor.smali

.class public Lcom/imo/android/imoim/network/ConnectStateMonitor;
.super Ljava/lang/Object;
.source "SourceFile"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectStateWatcher;,
        Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;
    }
.end annotation


# static fields
.field private static final TAG:Ljava/lang/String; = "ConnectStateMonitor"


# instance fields
.field private mLastConnectState:Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;

.field private mWatchers:Ljava/util/concurrent/CopyOnWriteArrayList;
    .annotation system Ldalvik/annotation/Signature;
        value = {
            "Ljava/util/concurrent/CopyOnWriteArrayList<",
            "Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectStateWatcher;",
            ">;"
        }
    .end annotation
.end field


# direct methods
.method public constructor <init>()V
    .registers 2

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

    .line 24
    sget-object v0, Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;->NOT_INIT:Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;

    iput-object v0, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mLastConnectState:Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;

    .line 25
    new-instance v0, Ljava/util/concurrent/CopyOnWriteArrayList;

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

    iput-object v0, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mWatchers:Ljava/util/concurrent/CopyOnWriteArrayList;

    return-void
.end method


# virtual methods
.method onConnectStateChange(Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;)V
    .registers 4

    .line 42
    iget-object v0, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mLastConnectState:Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;

    if-ne v0, p1, :cond_5

    return-void

    .line 48
    :cond_5
    iput-object p1, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mLastConnectState:Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;

    .line 49
    iget-object v0, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mWatchers:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0}, Ljava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;

    move-result-object v0

    :goto_d
    invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z

    move-result v1

    if-eqz v1, :cond_1d

    invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectStateWatcher;

    .line 50
    invoke-interface {v1, p1}, Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectStateWatcher;->onConnectStateChange(Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectState;)V

    goto :goto_d

    :cond_1d
    return-void
.end method

.method registerWatcher(Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectStateWatcher;)V
    .registers 3

    .line 30
    iget-object v0, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mWatchers:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0, p1}, Ljava/util/concurrent/CopyOnWriteArrayList;->contains(Ljava/lang/Object;)Z

    move-result v0

    if-nez v0, :cond_d

    .line 31
    iget-object v0, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mWatchers:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0, p1}, Ljava/util/concurrent/CopyOnWriteArrayList;->add(Ljava/lang/Object;)Z

    :cond_d
    return-void
.end method

.method unregisterWatcher(Lcom/imo/android/imoim/network/ConnectStateMonitor$ConnectStateWatcher;)V
    .registers 3

    .line 37
    iget-object v0, p0, Lcom/imo/android/imoim/network/ConnectStateMonitor;->mWatchers:Ljava/util/concurrent/CopyOnWriteArrayList;

    invoke-virtual {v0, p1}, Ljava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;)Z

    return-void
.end method