DaemonSocket$b.smali

.class public Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;
.super Ljava/lang/Thread;
.source "DaemonSocket.java"


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/cleanmaster/feedback/daemon/DaemonSocket;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x9
    name = "b"
.end annotation


# instance fields
.field private a:Ljava/net/ServerSocket;

.field private b:Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;


# direct methods
.method public constructor <init>(Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;)V
    .registers 4
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/io/IOException;
        }
    .end annotation

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

    .line 45
    iput-object p1, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->b:Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;

    .line 46
    new-instance v0, Ljava/net/ServerSocket;

    const v1, 0x9060

    invoke-direct {v0, v1}, Ljava/net/ServerSocket;-><init>(I)V

    iput-object v0, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    .line 47
    return-void
.end method


# virtual methods
.method protected finalize()V
    .registers 2
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Ljava/lang/Throwable;
        }
    .end annotation

    .prologue
    .line 112
    iget-object v0, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    if-eqz v0, :cond_11

    iget-object v0, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    invoke-virtual {v0}, Ljava/net/ServerSocket;->isClosed()Z

    move-result v0

    if-nez v0, :cond_11

    .line 113
    iget-object v0, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    invoke-virtual {v0}, Ljava/net/ServerSocket;->close()V

    .line 115
    :cond_11
    const/4 v0, 0x0

    iput-object v0, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    .line 116
    invoke-super {p0}, Ljava/lang/Object;->finalize()V

    .line 117
    return-void
.end method

.method public interrupt()V
    .registers 3

    .prologue
    .line 100
    iget-object v0, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    if-eqz v0, :cond_9

    .line 102
    :try_start_4
    iget-object v0, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    invoke-virtual {v0}, Ljava/net/ServerSocket;->close()V
    :try_end_9
    .catch Ljava/io/IOException; {:try_start_4 .. :try_end_9} :catch_d

    .line 107
    :cond_9
    :goto_9
    invoke-super {p0}, Ljava/lang/Thread;->interrupt()V

    .line 108
    return-void

    .line 103
    :catch_d
    move-exception v0

    .line 104
    const-string v1, "daemon.DaemonSocket"

    invoke-virtual {v0}, Ljava/io/IOException;->getMessage()Ljava/lang/String;

    move-result-object v0

    invoke-static {v1, v0}, Lcom/cleanmaster/feedback/daemon/h;->d(Ljava/lang/String;Ljava/lang/String;)V

    goto :goto_9
.end method

.method public run()V
    .registers 10

    .prologue
    const/4 v0, 0x0

    .line 51
    move-object v3, v0

    move-object v2, v0

    .line 54
    :goto_3
    invoke-virtual {p0}, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->isInterrupted()Z

    move-result v1

    if-nez v1, :cond_12e

    iget-object v1, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    invoke-virtual {v1}, Ljava/net/ServerSocket;->isClosed()Z

    move-result v1

    if-nez v1, :cond_12e

    .line 56
    :try_start_11
    const-string v1, "daemon.DaemonSocket"

    const-string/jumbo v4, "wait for connect..."

    invoke-static {v1, v4}, Lcom/cleanmaster/util/CMLog;->d(Ljava/lang/String;Ljava/lang/String;)V

    .line 57
    iget-object v1, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->a:Ljava/net/ServerSocket;

    invoke-virtual {v1}, Ljava/net/ServerSocket;->accept()Ljava/net/Socket;

    move-result-object v2

    .line 58
    new-instance v1, Ljava/io/DataInputStream;

    invoke-virtual {v2}, Ljava/net/Socket;->getInputStream()Ljava/io/InputStream;

    move-result-object v4

    invoke-direct {v1, v4}, Ljava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
    :try_end_28
    .catch Ljava/io/IOException; {:try_start_11 .. :try_end_28} :catch_141
    .catch Ljava/lang/Exception; {:try_start_11 .. :try_end_28} :catch_136
    .catchall {:try_start_11 .. :try_end_28} :catchall_12f

    .line 59
    :try_start_28
    new-instance v0, Ljava/io/DataOutputStream;

    invoke-virtual {v2}, Ljava/net/Socket;->getOutputStream()Ljava/io/OutputStream;

    move-result-object v4

    invoke-direct {v0, v4}, Ljava/io/DataOutputStream;-><init>(Ljava/io/OutputStream;)V
    :try_end_31
    .catch Ljava/io/IOException; {:try_start_28 .. :try_end_31} :catch_148
    .catch Ljava/lang/Exception; {:try_start_28 .. :try_end_31} :catch_13c
    .catchall {:try_start_28 .. :try_end_31} :catchall_134

    .line 61
    :try_start_31
    invoke-virtual {v2}, Ljava/net/Socket;->getReceiveBufferSize()I

    move-result v3

    new-array v3, v3, [B

    .line 62
    invoke-virtual {v1, v3}, Ljava/io/DataInputStream;->read([B)I

    move-result v4

    .line 63
    new-instance v5, Ljava/lang/String;

    const/4 v6, 0x0

    invoke-direct {v5, v3, v6, v4}, Ljava/lang/String;-><init>([BII)V

    .line 64
    const-string v3, "check"

    invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_66

    .line 65
    invoke-static {}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a()[B

    move-result-object v3

    invoke-virtual {v0, v3}, Ljava/io/DataOutputStream;->write([B)V

    .line 66
    const-string v3, "daemon.DaemonSocket"

    const-string v4, "receive check command!"

    invoke-static {v3, v4}, Lcom/cleanmaster/feedback/daemon/h;->a(Ljava/lang/String;Ljava/lang/String;)V

    .line 85
    :goto_57
    invoke-virtual {v0}, Ljava/io/DataOutputStream;->flush()V
    :try_end_5a
    .catch Ljava/io/IOException; {:try_start_31 .. :try_end_5a} :catch_a7
    .catch Ljava/lang/Exception; {:try_start_31 .. :try_end_5a} :catch_da
    .catchall {:try_start_31 .. :try_end_5a} :catchall_120

    .line 91
    invoke-static {v2}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/net/Socket;)V

    .line 92
    invoke-static {v1}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    .line 93
    invoke-static {v0}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    :goto_63
    move-object v3, v0

    move-object v0, v1

    goto :goto_3

    .line 67
    :cond_66
    :try_start_66
    const-string/jumbo v3, "uppid:"

    invoke-virtual {v5, v3}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z

    move-result v3

    if-eqz v3, :cond_b9

    .line 69
    const-string/jumbo v3, "uppid:"

    invoke-virtual {v3}, Ljava/lang/String;->length()I

    move-result v3

    invoke-virtual {v5, v3}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object v3

    .line 70
    iget-object v4, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->b:Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;

    if-eqz v4, :cond_87

    .line 71
    iget-object v4, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->b:Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;

    invoke-interface {v4, v3}, Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;->onNewPidReceived(Ljava/lang/String;)V

    .line 73
    :cond_87
    invoke-static {}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->b()[B

    move-result-object v4

    invoke-virtual {v0, v4}, Ljava/io/DataOutputStream;->write([B)V

    .line 74
    const-string v4, "daemon.DaemonSocket"

    new-instance v5, Ljava/lang/StringBuilder;

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

    const-string v6, "receive a new pid: "

    invoke-virtual {v5, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v5

    invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-static {v4, v3}, Lcom/cleanmaster/feedback/daemon/h;->a(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_a6
    .catch Ljava/io/IOException; {:try_start_66 .. :try_end_a6} :catch_a7
    .catch Ljava/lang/Exception; {:try_start_66 .. :try_end_a6} :catch_da
    .catchall {:try_start_66 .. :try_end_a6} :catchall_120

    goto :goto_57

    .line 86
    :catch_a7
    move-exception v3

    .line 87
    :goto_a8
    :try_start_a8
    const-string v4, "daemon.DaemonSocket"

    const-string v5, "accept: IOException"

    invoke-static {v4, v5, v3}, Lcom/cleanmaster/feedback/daemon/h;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :try_end_af
    .catchall {:try_start_a8 .. :try_end_af} :catchall_120

    .line 91
    invoke-static {v2}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/net/Socket;)V

    .line 92
    invoke-static {v1}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    .line 93
    invoke-static {v0}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    goto :goto_63

    .line 75
    :cond_b9
    :try_start_b9
    const-string v3, "exit"

    invoke-virtual {v3, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v3

    if-eqz v3, :cond_ed

    .line 76
    iget-object v3, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->b:Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;

    if-eqz v3, :cond_ca

    .line 77
    iget-object v3, p0, Lcom/cleanmaster/feedback/daemon/DaemonSocket$b;->b:Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;

    invoke-interface {v3}, Lcom/cleanmaster/feedback/daemon/DaemonSocket$CmdHandler;->onExitReceived()V

    .line 79
    :cond_ca
    invoke-static {}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->b()[B

    move-result-object v3

    invoke-virtual {v0, v3}, Ljava/io/DataOutputStream;->write([B)V

    .line 80
    const-string v3, "daemon.DaemonSocket"

    const-string v4, "receive exit command!"

    invoke-static {v3, v4}, Lcom/cleanmaster/feedback/daemon/h;->c(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_d8
    .catch Ljava/io/IOException; {:try_start_b9 .. :try_end_d8} :catch_a7
    .catch Ljava/lang/Exception; {:try_start_b9 .. :try_end_d8} :catch_da
    .catchall {:try_start_b9 .. :try_end_d8} :catchall_120

    goto/16 :goto_57

    .line 88
    :catch_da
    move-exception v3

    .line 89
    :goto_db
    :try_start_db
    const-string v4, "daemon.DaemonSocket"

    const-string v5, "accept: Exception"

    invoke-static {v4, v5, v3}, Lcom/cleanmaster/feedback/daemon/h;->a(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :try_end_e2
    .catchall {:try_start_db .. :try_end_e2} :catchall_120

    .line 91
    invoke-static {v2}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/net/Socket;)V

    .line 92
    invoke-static {v1}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    .line 93
    invoke-static {v0}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    goto/16 :goto_63

    .line 82
    :cond_ed
    :try_start_ed
    new-instance v3, Ljava/lang/StringBuilder;

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

    const-string v4, "#not support: "

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    const-string v4, "$"

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/String;->getBytes()[B

    move-result-object v3

    invoke-virtual {v0, v3}, Ljava/io/DataOutputStream;->write([B)V

    .line 83
    const-string v3, "daemon.DaemonSocket"

    const-string v4, "command: %s not be support!"

    const/4 v6, 0x1

    new-array v6, v6, [Ljava/lang/Object;

    const/4 v7, 0x0

    aput-object v5, v6, v7

    invoke-static {v4, v6}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

    move-result-object v4

    invoke-static {v3, v4}, Lcom/cleanmaster/feedback/daemon/h;->c(Ljava/lang/String;Ljava/lang/String;)V
    :try_end_11e
    .catch Ljava/io/IOException; {:try_start_ed .. :try_end_11e} :catch_a7
    .catch Ljava/lang/Exception; {:try_start_ed .. :try_end_11e} :catch_da
    .catchall {:try_start_ed .. :try_end_11e} :catchall_120

    goto/16 :goto_57

    .line 91
    :catchall_120
    move-exception v3

    move-object v8, v3

    move-object v3, v0

    move-object v0, v8

    :goto_124
    invoke-static {v2}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/net/Socket;)V

    .line 92
    invoke-static {v1}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    .line 93
    invoke-static {v3}, Lcom/cleanmaster/feedback/daemon/DaemonSocket;->a(Ljava/io/Closeable;)V

    throw v0

    .line 96
    :cond_12e
    return-void

    .line 91
    :catchall_12f
    move-exception v1

    move-object v8, v1

    move-object v1, v0

    move-object v0, v8

    goto :goto_124

    :catchall_134
    move-exception v0

    goto :goto_124

    .line 88
    :catch_136
    move-exception v1

    move-object v8, v1

    move-object v1, v0

    move-object v0, v3

    move-object v3, v8

    goto :goto_db

    :catch_13c
    move-exception v0

    move-object v8, v0

    move-object v0, v3

    move-object v3, v8

    goto :goto_db

    .line 86
    :catch_141
    move-exception v1

    move-object v8, v1

    move-object v1, v0

    move-object v0, v3

    move-object v3, v8

    goto/16 :goto_a8

    :catch_148
    move-exception v0

    move-object v8, v0

    move-object v0, v3

    move-object v3, v8

    goto/16 :goto_a8
.end method