UdpNioClient.smali
.class public final Lcom/open/net/client/impl/udp/nio/UdpNioClient;
.super Lcom/open/net/client/structures/BaseClient;
.source "UdpNioClient.java"
# instance fields
.field private mConnector:Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
.field private mReadByteBuffer:Ljava/nio/ByteBuffer;
.field private mSocketChannel:Ljava/nio/channels/DatagramChannel;
.field private mWriteByteBuffer:Ljava/nio/ByteBuffer;
# direct methods
.method static constructor <clinit>()V
.registers 0
.line 23
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/high16 p1, 0x10000
.line 52
invoke-static {p1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v0
iput-object v0, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
.line 53
invoke-static {p1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object p1
iput-object p1, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
.line 30
new-instance p1, Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
invoke-direct {p1, p0, p2}, Lcom/open/net/client/impl/udp/nio/UdpNioConnector;-><init>(Lcom/open/net/client/impl/udp/nio/UdpNioClient;Lcom/open/net/client/structures/IConnectListener;)V
iput-object p1, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mConnector:Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
return-void
.end method
# virtual methods
.method public connect()V
.registers 2
.line 39
iget-object v0, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mConnector:Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
invoke-virtual {v0}, Lcom/open/net/client/impl/udp/nio/UdpNioConnector;->connect()V
return-void
.end method
.method public disconnect()V
.registers 2
.line 43
iget-object v0, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mConnector:Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
invoke-virtual {v0}, Lcom/open/net/client/impl/udp/nio/UdpNioConnector;->disconnect()V
return-void
.end method
.method public init(Ljava/nio/channels/DatagramChannel;)V
.registers 2
.line 56
iput-object p1, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mSocketChannel:Ljava/nio/channels/DatagramChannel;
return-void
.end method
.method public onCheckConnect()V
.registers 2
.line 61
iget-object v0, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mConnector:Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
invoke-virtual {v0}, Lcom/open/net/client/impl/udp/nio/UdpNioConnector;->checkConnect()V
return-void
.end method
.method public onClose()V
.registers 2
const/4 v0, 0x0
.line 66
iput-object v0, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mSocketChannel:Ljava/nio/channels/DatagramChannel;
return-void
.end method
.method public onRead()Z
.registers 6
const/4 v0, 0x0
.line 72
:try_start_1
iget-object v1, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
.line 74
:cond_6
iget-object v1, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mSocketChannel:Ljava/nio/channels/DatagramChannel;
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1, v2}, Ljava/nio/channels/DatagramChannel;->read(Ljava/nio/ByteBuffer;)I
move-result v1
const/4 v2, -0x1
if-ne v1, v2, :cond_12
goto :goto_3d
.line 80
:cond_12
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
.line 81
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->remaining()I
move-result v2
if-lez v2, :cond_30
.line 82
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mMessageProcessor:Lcom/open/net/client/structures/BaseMessageProcessor;
iget-object v3, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v3
iget-object v4, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->remaining()I
move-result v4
invoke-virtual {v2, p0, v3, v0, v4}, Lcom/open/net/client/structures/BaseMessageProcessor;->onReceiveData(Lcom/open/net/client/structures/BaseClient;[BII)V
.line 84
:cond_30
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mReadByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
:try_end_35
.catch Ljava/lang/Exception; {:try_start_1 .. :try_end_35} :catch_39
if-nez v1, :cond_6
const/4 v0, 0x1
goto :goto_3d
:catch_39
move-exception v1
.line 91
invoke-virtual {v1}, Ljava/lang/Exception;->printStackTrace()V
.line 95
:goto_3d
iget-object v1, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mMessageProcessor:Lcom/open/net/client/structures/BaseMessageProcessor;
invoke-virtual {v1, p0}, Lcom/open/net/client/structures/BaseMessageProcessor;->onReceiveDataCompleted(Lcom/open/net/client/structures/BaseClient;)V
if-nez v0, :cond_52
.line 98
invoke-virtual {p0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;
move-result-object v1
:goto_48
if-eqz v1, :cond_52
.line 100
invoke-virtual {p0, v1}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->removeWriteMessage(Lcom/open/net/client/structures/message/Message;)V
.line 101
invoke-virtual {p0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;
move-result-object v1
goto :goto_48
:cond_52
return v0
.end method
.method public onWrite()Z
.registers 8
.line 109
invoke-virtual {p0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;
move-result-object v0
:goto_4
const/4 v1, 0x0
if-eqz v0, :cond_93
.line 113
:try_start_7
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->capacity()I
move-result v2
iget v3, v0, Lcom/open/net/client/structures/message/Message;->length:I
if-ge v2, v3, :cond_55
.line 116
iget v2, v0, Lcom/open/net/client/structures/message/Message;->length:I
move v3, v1
.line 121
:cond_14
iget-object v4, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->capacity()I
move-result v4
if-le v2, v4, :cond_23
iget-object v4, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->capacity()I
move-result v4
goto :goto_24
:cond_23
move v4, v2
.line 122
:goto_24
iget-object v5, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
iget-object v6, v0, Lcom/open/net/client/structures/message/Message;->data:[B
invoke-virtual {v5, v6, v3, v4}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
.line 123
iget-object v5, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v5}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
add-int/2addr v3, v4
sub-int/2addr v2, v4
.line 127
iget-object v4, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mSocketChannel:Ljava/nio/channels/DatagramChannel;
iget-object v5, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4, v5}, Ljava/nio/channels/DatagramChannel;->write(Ljava/nio/ByteBuffer;)I
move-result v4
:goto_3a
if-lez v4, :cond_4d
.line 130
iget-object v4, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v4
if-eqz v4, :cond_4d
.line 131
iget-object v4, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mSocketChannel:Ljava/nio/channels/DatagramChannel;
iget-object v5, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4, v5}, Ljava/nio/channels/DatagramChannel;->write(Ljava/nio/ByteBuffer;)I
move-result v4
goto :goto_3a
.line 134
:cond_4d
iget-object v4, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
if-gtz v2, :cond_14
goto :goto_85
.line 141
:cond_55
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
iget-object v3, v0, Lcom/open/net/client/structures/message/Message;->data:[B
iget v4, v0, Lcom/open/net/client/structures/message/Message;->offset:I
iget v5, v0, Lcom/open/net/client/structures/message/Message;->length:I
invoke-virtual {v2, v3, v4, v5}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
.line 142
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
.line 144
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mSocketChannel:Ljava/nio/channels/DatagramChannel;
iget-object v3, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2, v3}, Ljava/nio/channels/DatagramChannel;->write(Ljava/nio/ByteBuffer;)I
move-result v2
:goto_6d
if-lez v2, :cond_80
.line 147
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v2
if-eqz v2, :cond_80
.line 148
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mSocketChannel:Ljava/nio/channels/DatagramChannel;
iget-object v3, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2, v3}, Ljava/nio/channels/DatagramChannel;->write(Ljava/nio/ByteBuffer;)I
move-result v2
goto :goto_6d
.line 151
:cond_80
iget-object v2, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mWriteByteBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
.line 154
:goto_85
invoke-virtual {p0, v0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->removeWriteMessage(Lcom/open/net/client/structures/message/Message;)V
.line 155
invoke-virtual {p0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;
move-result-object v0
:try_end_8c
.catch Ljava/io/IOException; {:try_start_7 .. :try_end_8c} :catch_8e
goto/16 :goto_4
:catch_8e
move-exception v2
.line 159
invoke-virtual {v2}, Ljava/io/IOException;->printStackTrace()V
goto :goto_94
:cond_93
const/4 v1, 0x1
:goto_94
if-nez v1, :cond_a9
if-eqz v0, :cond_9b
.line 166
invoke-virtual {p0, v0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->removeWriteMessage(Lcom/open/net/client/structures/message/Message;)V
.line 168
:cond_9b
invoke-virtual {p0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;
move-result-object v0
:goto_9f
if-eqz v0, :cond_a9
.line 170
invoke-virtual {p0, v0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->removeWriteMessage(Lcom/open/net/client/structures/message/Message;)V
.line 171
invoke-virtual {p0}, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->pollWriteMessage()Lcom/open/net/client/structures/message/Message;
move-result-object v0
goto :goto_9f
:cond_a9
return v1
.end method
.method public reconnect()V
.registers 2
.line 47
iget-object v0, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mConnector:Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
invoke-virtual {v0}, Lcom/open/net/client/impl/udp/nio/UdpNioConnector;->reconnect()V
return-void
.end method
.method public setConnectAddress([Lcom/open/net/client/structures/UdpAddress;)V
.registers 3
.line 35
iget-object v0, p0, Lcom/open/net/client/impl/udp/nio/UdpNioClient;->mConnector:Lcom/open/net/client/impl/udp/nio/UdpNioConnector;
invoke-virtual {v0, p1}, Lcom/open/net/client/impl/udp/nio/UdpNioConnector;->setConnectAddress([Lcom/open/net/client/structures/UdpAddress;)V
return-void
.end method