UdpBioReadWriteProcessor.smali

.class public Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;
.super Ljava/lang/Object;
.source "UdpBioReadWriteProcessor.java"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ReadRunnable;,
        Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;,
        Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ConnectRunnable;
    }
.end annotation


# static fields
.field private static G_SOCKET_ID:I


# instance fields
.field private TAG:Ljava/lang/String;

.field private mClient:Lcom/open/net/client/structures/BaseClient;

.field private mConnectProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ConnectRunnable;

.field private mConnectStatusListener:Lcom/open/net/client/impl/udp/bio/UdpBioConnectListener;

.field private mConnectThread:Ljava/lang/Thread;

.field private mIp:Ljava/lang/String;

.field private mPort:I

.field private mReadProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ReadRunnable;

.field private mReadThread:Ljava/lang/Thread;

.field private mSocket:Ljava/net/DatagramSocket;

.field private mSocketId:I

.field private mWriteProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;

.field private mWriteThread:Ljava/lang/Thread;

.field private r_w_count:I


# direct methods
.method static constructor <clinit>()V
    .registers 0

    return-void
.end method

.method public constructor <init>(Ljava/lang/String;ILcom/open/net/client/structures/BaseClient;Lcom/open/net/client/impl/udp/bio/UdpBioConnectListener;)V
    .registers 6

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

    const-string v0, "UdpBioReadWriteProcessor"

    .line 21
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->TAG:Ljava/lang/String;

    const-string v0, "192.168.1.1"

    .line 26
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mIp:Ljava/lang/String;

    const/16 v0, 0x270f

    .line 27
    iput v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mPort:I

    const/4 v0, 0x0

    .line 38
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectThread:Ljava/lang/Thread;

    .line 39
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteThread:Ljava/lang/Thread;

    .line 40
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadThread:Ljava/lang/Thread;

    const/4 v0, 0x2

    .line 42
    iput v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->r_w_count:I

    .line 45
    sget v0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->G_SOCKET_ID:I

    add-int/lit8 v0, v0, 0x1

    sput v0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->G_SOCKET_ID:I

    .line 47
    iput v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mSocketId:I

    .line 48
    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mIp:Ljava/lang/String;

    .line 49
    iput p2, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mPort:I

    .line 50
    iput-object p3, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mClient:Lcom/open/net/client/structures/BaseClient;

    .line 51
    iput-object p4, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectStatusListener:Lcom/open/net/client/impl/udp/bio/UdpBioConnectListener;

    return-void
.end method

.method static synthetic access$100(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Lcom/open/net/client/structures/BaseClient;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mClient:Lcom/open/net/client/structures/BaseClient;

    return-object p0
.end method

.method static synthetic access$1000(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Ljava/lang/Thread;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteThread:Ljava/lang/Thread;

    return-object p0
.end method

.method static synthetic access$1002(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;Ljava/lang/Thread;)Ljava/lang/Thread;
    .registers 2

    .line 19
    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteThread:Ljava/lang/Thread;

    return-object p1
.end method

.method static synthetic access$1100(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Ljava/lang/Thread;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadThread:Ljava/lang/Thread;

    return-object p0
.end method

.method static synthetic access$1102(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;Ljava/lang/Thread;)Ljava/lang/Thread;
    .registers 2

    .line 19
    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadThread:Ljava/lang/Thread;

    return-object p1
.end method

.method static synthetic access$200(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Ljava/net/DatagramSocket;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mSocket:Ljava/net/DatagramSocket;

    return-object p0
.end method

.method static synthetic access$202(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;Ljava/net/DatagramSocket;)Ljava/net/DatagramSocket;
    .registers 2

    .line 19
    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mSocket:Ljava/net/DatagramSocket;

    return-object p1
.end method

.method static synthetic access$300(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Ljava/lang/String;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mIp:Ljava/lang/String;

    return-object p0
.end method

.method static synthetic access$400(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)I
    .registers 1

    .line 19
    iget p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mPort:I

    return p0
.end method

.method static synthetic access$500(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Lcom/open/net/client/impl/udp/bio/UdpBioConnectListener;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectStatusListener:Lcom/open/net/client/impl/udp/bio/UdpBioConnectListener;

    return-object p0
.end method

.method static synthetic access$600(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;

    return-object p0
.end method

.method static synthetic access$602(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;)Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;
    .registers 2

    .line 19
    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;

    return-object p1
.end method

.method static synthetic access$800(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ReadRunnable;
    .registers 1

    .line 19
    iget-object p0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ReadRunnable;

    return-object p0
.end method

.method static synthetic access$802(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ReadRunnable;)Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ReadRunnable;
    .registers 2

    .line 19
    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ReadRunnable;

    return-object p1
.end method


# virtual methods
.method public declared-synchronized close()V
    .registers 3

    monitor-enter p0

    .line 62
    :try_start_1
    invoke-virtual {p0}, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->wakeUp()V

    .line 64
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mSocket:Ljava/net/DatagramSocket;

    if-eqz v0, :cond_b

    .line 65
    invoke-virtual {v0}, Ljava/net/DatagramSocket;->close()V
    :try_end_b
    .catchall {:try_start_1 .. :try_end_b} :catchall_62

    :cond_b
    const/4 v0, 0x0

    .line 69
    :try_start_c
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectThread:Ljava/lang/Thread;

    if-eqz v1, :cond_1b

    invoke-virtual {v1}, Ljava/lang/Thread;->isAlive()Z

    move-result v1

    if-eqz v1, :cond_1b

    .line 70
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectThread:Ljava/lang/Thread;

    invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
    :try_end_1b
    .catch Ljava/lang/Exception; {:try_start_c .. :try_end_1b} :catch_20
    .catchall {:try_start_c .. :try_end_1b} :catchall_1e

    .line 75
    :cond_1b
    :goto_1b
    :try_start_1b
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectThread:Ljava/lang/Thread;
    :try_end_1d
    .catchall {:try_start_1b .. :try_end_1d} :catchall_62

    goto :goto_25

    :catchall_1e
    move-exception v1

    goto :goto_5f

    :catch_20
    move-exception v1

    .line 73
    :try_start_21
    invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
    :try_end_24
    .catchall {:try_start_21 .. :try_end_24} :catchall_1e

    goto :goto_1b

    .line 79
    :goto_25
    :try_start_25
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteThread:Ljava/lang/Thread;

    if-eqz v1, :cond_34

    invoke-virtual {v1}, Ljava/lang/Thread;->isAlive()Z

    move-result v1

    if-eqz v1, :cond_34

    .line 80
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteThread:Ljava/lang/Thread;

    invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
    :try_end_34
    .catch Ljava/lang/Exception; {:try_start_25 .. :try_end_34} :catch_39
    .catchall {:try_start_25 .. :try_end_34} :catchall_37

    .line 85
    :cond_34
    :goto_34
    :try_start_34
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteThread:Ljava/lang/Thread;
    :try_end_36
    .catchall {:try_start_34 .. :try_end_36} :catchall_62

    goto :goto_3e

    :catchall_37
    move-exception v1

    goto :goto_5c

    :catch_39
    move-exception v1

    .line 83
    :try_start_3a
    invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
    :try_end_3d
    .catchall {:try_start_3a .. :try_end_3d} :catchall_37

    goto :goto_34

    .line 89
    :goto_3e
    :try_start_3e
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadThread:Ljava/lang/Thread;

    if-eqz v1, :cond_4d

    invoke-virtual {v1}, Ljava/lang/Thread;->isAlive()Z

    move-result v1

    if-eqz v1, :cond_4d

    .line 90
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadThread:Ljava/lang/Thread;

    invoke-virtual {v1}, Ljava/lang/Thread;->interrupt()V
    :try_end_4d
    .catch Ljava/lang/Exception; {:try_start_3e .. :try_end_4d} :catch_52
    .catchall {:try_start_3e .. :try_end_4d} :catchall_50

    .line 95
    :cond_4d
    :goto_4d
    :try_start_4d
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadThread:Ljava/lang/Thread;
    :try_end_4f
    .catchall {:try_start_4d .. :try_end_4f} :catchall_62

    goto :goto_57

    :catchall_50
    move-exception v1

    goto :goto_59

    :catch_52
    move-exception v1

    .line 93
    :try_start_53
    invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
    :try_end_56
    .catchall {:try_start_53 .. :try_end_56} :catchall_50

    goto :goto_4d

    .line 97
    :goto_57
    monitor-exit p0

    return-void

    .line 95
    :goto_59
    :try_start_59
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mReadThread:Ljava/lang/Thread;

    throw v1

    .line 85
    :goto_5c
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteThread:Ljava/lang/Thread;

    throw v1

    .line 75
    :goto_5f
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectThread:Ljava/lang/Thread;

    throw v1
    :try_end_62
    .catchall {:try_start_59 .. :try_end_62} :catchall_62

    :catchall_62
    move-exception v0

    monitor-exit p0

    throw v0
.end method

.method public declared-synchronized onSocketExit(I)V
    .registers 7

    monitor-enter p0

    .line 107
    :try_start_1
    iget v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->r_w_count:I

    const/4 v1, 0x1

    sub-int/2addr v0, v1

    iput v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->r_w_count:I

    if-gtz v0, :cond_b

    move v0, v1

    goto :goto_c

    :cond_b
    const/4 v0, 0x0

    .line 109
    :goto_c
    sget-object v2, Ljava/lang/System;->out:Ljava/io/PrintStream;

    new-instance v3, Ljava/lang/StringBuilder;

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

    iget-object v4, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->TAG:Ljava/lang/String;

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

    const-string v4, "onSocketExit mSocketId "

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

    iget v4, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mSocketId:I

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

    const-string v4, " exit_code "

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

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

    if-ne p1, v1, :cond_2f

    const-string p1, " onWrite"

    goto :goto_31

    :cond_2f
    const-string p1, " onRead"

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

    const-string p1, " isWriterReaderExit "

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

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

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

    move-result-object p1

    invoke-virtual {v2, p1}, Ljava/io/PrintStream;->println(Ljava/lang/String;)V

    .line 110
    invoke-virtual {p0}, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->close()V

    if-eqz v0, :cond_4f

    .line 112
    iget-object p1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectStatusListener:Lcom/open/net/client/impl/udp/bio/UdpBioConnectListener;

    if-eqz p1, :cond_4f

    .line 113
    invoke-interface {p1, p0}, Lcom/open/net/client/impl/udp/bio/UdpBioConnectListener;->onConnectFailed(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;)V
    :try_end_4f
    .catchall {:try_start_1 .. :try_end_4f} :catchall_51

    .line 116
    :cond_4f
    monitor-exit p0

    return-void

    :catchall_51
    move-exception p1

    monitor-exit p0

    throw p1
.end method

.method public start()V
    .registers 3

    .line 55
    new-instance v0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ConnectRunnable;

    const/4 v1, 0x0

    invoke-direct {v0, p0, v1}, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ConnectRunnable;-><init>(Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$1;)V

    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ConnectRunnable;

    .line 56
    new-instance v0, Ljava/lang/Thread;

    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$ConnectRunnable;

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

    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mConnectThread:Ljava/lang/Thread;

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

    return-void
.end method

.method public wakeUp()V
    .registers 2

    .line 100
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor;->mWriteProcessor:Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;

    if-eqz v0, :cond_7

    .line 101
    invoke-virtual {v0}, Lcom/open/net/client/impl/udp/bio/processor/UdpBioReadWriteProcessor$WriteRunnable;->wakeup()V

    :cond_7
    return-void
.end method