UdpBioClient.smali

.class public Lcom/open/net/client/impl/udp/bio/UdpBioClient;
.super Lcom/open/net/client/structures/BaseClient;
.source "UdpBioClient.java"


# instance fields
.field private mConnector:Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

.field public mReadBuff:[B

.field private mReadDatagramPacket:Ljava/net/DatagramPacket;

.field private mSocket:Ljava/net/DatagramSocket;

.field public mWriteBuff:[B

.field private mWriteDatagramPacket:Ljava/net/DatagramPacket;


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

    .line 22
    invoke-static {}, Lcom/open/net/client/GClient;->init()V

    return-void
.end method

.method public constructor <init>(Lcom/open/net/client/structures/BaseMessageProcessor;Lcom/open/net/client/structures/IConnectListener;)V
    .registers 4

    .line 29
    invoke-direct {p0, p1}, Lcom/open/net/client/structures/BaseClient;-><init>(Lcom/open/net/client/structures/BaseMessageProcessor;)V

    const p1, 0xffdc

    new-array v0, p1, [B

    .line 53
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mWriteBuff:[B

    new-array p1, p1, [B

    .line 54
    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mReadBuff:[B

    .line 30
    new-instance p1, Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

    invoke-direct {p1, p0, p2}, Lcom/open/net/client/impl/udp/bio/UdpBioConnector;-><init>(Lcom/open/net/client/impl/udp/bio/UdpBioClient;Lcom/open/net/client/structures/IConnectListener;)V

    iput-object p1, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mConnector:Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

    return-void
.end method


# virtual methods
.method public connect()V
    .registers 2

    .line 38
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mConnector:Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

    invoke-virtual {v0}, Lcom/open/net/client/impl/udp/bio/UdpBioConnector;->connect()V

    return-void
.end method

.method public disconnect()V
    .registers 2

    .line 42
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mConnector:Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

    invoke-virtual {v0}, Lcom/open/net/client/impl/udp/bio/UdpBioConnector;->disconnect()V

    return-void
.end method

.method public init(Ljava/net/DatagramSocket;Ljava/net/DatagramPacket;Ljava/net/DatagramPacket;)V
    .registers 4

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

    .line 58
    iput-object p2, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mWriteDatagramPacket:Ljava/net/DatagramPacket;

    .line 59
    iput-object p3, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mReadDatagramPacket:Ljava/net/DatagramPacket;

    return-void
.end method

.method public onCheckConnect()V
    .registers 2

    .line 64
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mConnector:Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

    invoke-virtual {v0}, Lcom/open/net/client/impl/udp/bio/UdpBioConnector;->checkConnect()V

    return-void
.end method

.method public onClose()V
    .registers 2

    const/4 v0, 0x0

    .line 69
    iput-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mSocket:Ljava/net/DatagramSocket;

    return-void
.end method

.method public onRead()Z
    .registers 5

    .line 76
    :goto_0
    :try_start_0
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mSocket:Ljava/net/DatagramSocket;

    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mReadDatagramPacket:Ljava/net/DatagramPacket;

    invoke-virtual {v0, v1}, Ljava/net/DatagramSocket;->receive(Ljava/net/DatagramPacket;)V

    .line 77
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mMessageProcessor:Lcom/open/net/client/structures/BaseMessageProcessor;

    if-eqz v0, :cond_27

    .line 78
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mMessageProcessor:Lcom/open/net/client/structures/BaseMessageProcessor;

    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mReadDatagramPacket:Ljava/net/DatagramPacket;

    invoke-virtual {v1}, Ljava/net/DatagramPacket;->getData()[B

    move-result-object v1

    iget-object v2, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mReadDatagramPacket:Ljava/net/DatagramPacket;

    invoke-virtual {v2}, Ljava/net/DatagramPacket;->getOffset()I

    move-result v2

    iget-object v3, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mReadDatagramPacket:Ljava/net/DatagramPacket;

    invoke-virtual {v3}, Ljava/net/DatagramPacket;->getLength()I

    move-result v3

    invoke-virtual {v0, p0, v1, v2, v3}, Lcom/open/net/client/structures/BaseMessageProcessor;->onReceiveData(Lcom/open/net/client/structures/BaseClient;[BII)V

    .line 79
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mMessageProcessor:Lcom/open/net/client/structures/BaseMessageProcessor;

    invoke-virtual {v0, p0}, Lcom/open/net/client/structures/BaseMessageProcessor;->onReceiveDataCompleted(Lcom/open/net/client/structures/BaseClient;)V

    .line 81
    :cond_27
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mReadDatagramPacket:Ljava/net/DatagramPacket;

    invoke-virtual {v0}, Ljava/net/DatagramPacket;->getData()[B

    move-result-object v1

    array-length v1, v1

    invoke-virtual {v0, v1}, Ljava/net/DatagramPacket;->setLength(I)V
    :try_end_31
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_31} :catch_32

    goto :goto_0

    :catch_32
    move-exception v0

    .line 84
    invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V

    .line 87
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mMessageProcessor:Lcom/open/net/client/structures/BaseMessageProcessor;

    if-eqz v0, :cond_3f

    .line 88
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mMessageProcessor:Lcom/open/net/client/structures/BaseMessageProcessor;

    invoke-virtual {v0, p0}, Lcom/open/net/client/structures/BaseMessageProcessor;->onReceiveDataCompleted(Lcom/open/net/client/structures/BaseClient;)V

    :cond_3f
    const/4 v0, 0x1

    return v0
.end method

.method public onWrite()Z
    .registers 6

    .line 97
    invoke-virtual {p0}, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;

    move-result-object v0

    :goto_4
    if-eqz v0, :cond_24

    .line 100
    :try_start_6
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mWriteDatagramPacket:Ljava/net/DatagramPacket;

    iget-object v2, v0, Lcom/open/net/client/structures/message/Message;->data:[B

    iget v3, v0, Lcom/open/net/client/structures/message/Message;->offset:I

    iget v4, v0, Lcom/open/net/client/structures/message/Message;->length:I

    invoke-virtual {v1, v2, v3, v4}, Ljava/net/DatagramPacket;->setData([BII)V

    .line 101
    iget-object v1, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mSocket:Ljava/net/DatagramSocket;

    iget-object v2, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mWriteDatagramPacket:Ljava/net/DatagramPacket;

    invoke-virtual {v1, v2}, Ljava/net/DatagramSocket;->send(Ljava/net/DatagramPacket;)V

    .line 102
    invoke-virtual {p0, v0}, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->removeWriteMessage(Lcom/open/net/client/structures/message/Message;)V

    .line 103
    invoke-virtual {p0}, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;

    move-result-object v0
    :try_end_1f
    .catch Ljava/lang/Exception; {:try_start_6 .. :try_end_1f} :catch_20

    goto :goto_4

    :catch_20
    move-exception v0

    .line 106
    invoke-virtual {v0}, Ljava/lang/Exception;->printStackTrace()V

    :cond_24
    const/4 v0, 0x1

    return v0
.end method

.method public reconnect()V
    .registers 2

    .line 46
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mConnector:Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

    invoke-virtual {v0}, Lcom/open/net/client/impl/udp/bio/UdpBioConnector;->reconnect()V

    return-void
.end method

.method public setConnectAddress([Lcom/open/net/client/structures/UdpAddress;)V
    .registers 3

    .line 34
    iget-object v0, p0, Lcom/open/net/client/impl/udp/bio/UdpBioClient;->mConnector:Lcom/open/net/client/impl/udp/bio/UdpBioConnector;

    invoke-virtual {v0, p1}, Lcom/open/net/client/impl/udp/bio/UdpBioConnector;->setConnectAddress([Lcom/open/net/client/structures/UdpAddress;)V

    return-void
.end method