NormalConnection.smali
.class public Lcom/imo/android/imoim/network/NormalConnection;
.super Lcom/imo/android/imoim/network/BaseConnection;
.source "SourceFile"
# static fields
.field private static final DATA_LIMIT:I = 0x500000
.field public static final INITIAL_SIZE:I = 0x1400
.field private static final TAG:Ljava/lang/String; = "NormalConnection"
# instance fields
.field public iv:[B
.field public msgLength:I
.field stream:Lcom/imo/android/imoim/network/StreamHelper;
.field zlib:Lcom/imo/android/imoim/util/eu;
# direct methods
.method public constructor <init>(Lcom/imo/android/imoim/network/ConnectData3;Lcom/imo/android/imoim/network/StreamHelper;Lcom/imo/android/imoim/util/eu;Lcom/imo/android/imoim/network/SocketHandler;)V
.registers 5
.line 30
invoke-direct {p0, p1, p4}, Lcom/imo/android/imoim/network/BaseConnection;-><init>(Lcom/imo/android/imoim/network/ConnectData3;Lcom/imo/android/imoim/network/SocketHandler;)V
const/16 p1, 0xc
new-array p1, p1, [B
.line 22
iput-object p1, p0, Lcom/imo/android/imoim/network/NormalConnection;->iv:[B
.line 31
iput-object p2, p0, Lcom/imo/android/imoim/network/NormalConnection;->stream:Lcom/imo/android/imoim/network/StreamHelper;
.line 32
iput-object p3, p0, Lcom/imo/android/imoim/network/NormalConnection;->zlib:Lcom/imo/android/imoim/util/eu;
return-void
.end method
.method private handleIt([BJ)V
.registers 12
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 115
array-length v0, p1
int-to-long v4, v0
.line 116
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget-boolean v0, v0, Lcom/imo/android/imoim/network/ConnectData3;->gotNameChannel:Z
if-eqz v0, :cond_11
.line 117
sget-object v0, Lcom/imo/android/imoim/j/a;->a:Ljavax/crypto/SecretKey;
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->iv:[B
invoke-static {p1, v0, v1}, Lcom/imo/android/imoim/j/a;->c([BLjavax/crypto/SecretKey;[B)[B
move-result-object p1
goto :goto_19
.line 119
:cond_11
sget-object v0, Lcom/imo/android/imoim/j/a;->b:Ljavax/crypto/SecretKey;
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->iv:[B
invoke-static {p1, v0, v1}, Lcom/imo/android/imoim/j/a;->c([BLjavax/crypto/SecretKey;[B)[B
move-result-object p1
.line 122
:goto_19
new-instance v3, Ljava/lang/String;
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->zlib:Lcom/imo/android/imoim/util/eu;
invoke-virtual {v0, p1}, Lcom/imo/android/imoim/util/eu;->b([B)[B
move-result-object p1
const-string v0, "UTF-8"
invoke-direct {v3, p1, v0}, Ljava/lang/String;-><init>([BLjava/lang/String;)V
.line 123
iget-object p1, p0, Lcom/imo/android/imoim/network/NormalConnection;->messageListener:Lcom/imo/android/imoim/network/MessageListener;
if-eqz p1, :cond_32
.line 124
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->messageListener:Lcom/imo/android/imoim/network/MessageListener;
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
move-wide v6, p2
invoke-interface/range {v1 .. v7}, Lcom/imo/android/imoim/network/MessageListener;->onReceiveMessage(Lcom/imo/android/imoim/network/ConnectData3;Ljava/lang/String;JJ)V
:cond_32
return-void
.end method
.method private handleMessage(J)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/net/ProtocolException;
}
.end annotation
.line 92
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
.line 96
:goto_5
invoke-virtual {p0}, Lcom/imo/android/imoim/network/NormalConnection;->handleRead()[B
move-result-object v0
if-eqz v0, :cond_20
.line 102
:try_start_b
invoke-direct {p0, v0, p1, p2}, Lcom/imo/android/imoim/network/NormalConnection;->handleIt([BJ)V
:try_end_e
.catch Ljava/lang/Exception; {:try_start_b .. :try_end_e} :catch_f
goto :goto_5
:catch_f
move-exception p1
.line 105
invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
const/4 p2, 0x1
const-string v0, "NormalConnection"
.line 3079
invoke-static {v0, p1, p2}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V
const-string p1, "exception"
.line 106
invoke-virtual {p0, p1}, Lcom/imo/android/imoim/network/NormalConnection;->handleError(Ljava/lang/String;)V
return-void
.line 111
:cond_20
iget-object p1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->compact()Ljava/nio/ByteBuffer;
return-void
.end method
# virtual methods
.method public close()I
.registers 4
.line 204
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->socketHandler:Lcom/imo/android/imoim/network/SocketHandler;
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget v1, v1, Lcom/imo/android/imoim/network/ConnectData3;->fd:I
invoke-interface {v0, v1}, Lcom/imo/android/imoim/network/SocketHandler;->handleClose(I)I
move-result v0
.line 205
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
const/4 v2, 0x1
iput-boolean v2, v1, Lcom/imo/android/imoim/network/ConnectData3;->closed:Z
return v0
.end method
.method public embiggenBuffer(I)V
.registers 5
.line 215
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->capacity()I
move-result v0
const/16 v1, 0x1400
if-ne v0, v1, :cond_12
const v0, 0x8000
.line 218
invoke-static {p1, v0}, Ljava/lang/Math;->max(II)I
move-result p1
goto :goto_18
:cond_12
mul-int/lit8 v0, v0, 0x2
.line 221
invoke-static {p1, v0}, Ljava/lang/Math;->max(II)I
move-result p1
.line 224
:goto_18
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "embiggen "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->capacity()I
move-result v1
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " -> "
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "NormalConnection"
.line 5071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 225
invoke-static {p1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object p1
.line 226
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v0
const/4 v1, 0x0
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->position()I
move-result v2
invoke-virtual {p1, v0, v1, v2}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
.line 227
iput-object p1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
return-void
.end method
.method public getConnectData()Lcom/imo/android/imoim/network/ConnectData3;
.registers 2
.line 199
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
return-object v0
.end method
.method public getIp()Ljava/lang/String;
.registers 2
.line 37
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget-object v0, v0, Lcom/imo/android/imoim/network/ConnectData3;->ip:Ljava/lang/String;
return-object v0
.end method
.method public getPort()I
.registers 2
.line 42
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget v0, v0, Lcom/imo/android/imoim/network/ConnectData3;->port:I
return v0
.end method
.method public handleError(Ljava/lang/String;)V
.registers 5
.line 191
invoke-virtual {p0}, Lcom/imo/android/imoim/network/NormalConnection;->close()I
move-result v0
.line 192
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->errorListener:Lcom/imo/android/imoim/network/Connection$ErrorListener;
if-eqz v1, :cond_11
.line 193
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->errorListener:Lcom/imo/android/imoim/network/Connection$ErrorListener;
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget v2, v2, Lcom/imo/android/imoim/network/ConnectData3;->fd:I
invoke-interface {v1, v2, v0, p1}, Lcom/imo/android/imoim/network/Connection$ErrorListener;->onError(IILjava/lang/String;)V
:cond_11
return-void
.end method
.method public handleRead([B)V
.registers 13
const-string v0, "NormalConnection"
.line 47
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
if-nez v1, :cond_e
const/16 v1, 0x1400
.line 49
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v1
iput-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
.line 52
:cond_e
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->socketHandler:Lcom/imo/android/imoim/network/SocketHandler;
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget v2, v2, Lcom/imo/android/imoim/network/ConnectData3;->fd:I
invoke-interface {v1, v2, p1}, Lcom/imo/android/imoim/network/SocketHandler;->handleRead(I[B)I
move-result v1
const-string v2, "readerror"
if-nez v1, :cond_28
.line 54
invoke-static {v1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p1
invoke-virtual {v2, p1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
invoke-virtual {p0, p1}, Lcom/imo/android/imoim/network/NormalConnection;->handleError(Ljava/lang/String;)V
return-void
:cond_28
if-gez v1, :cond_36
.line 59
invoke-static {v1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object p1
invoke-virtual {v2, p1}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
invoke-virtual {p0, p1}, Lcom/imo/android/imoim/network/NormalConnection;->handleError(Ljava/lang/String;)V
return-void
.line 63
:cond_36
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v2
.line 64
iget-object v4, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->position()I
move-result v4
.line 65
iget-object v5, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v5}, Ljava/nio/ByteBuffer;->capacity()I
move-result v5
add-int v6, v4, v1
if-le v6, v5, :cond_4d
.line 68
invoke-virtual {p0, v6}, Lcom/imo/android/imoim/network/NormalConnection;->embiggenBuffer(I)V
.line 70
:cond_4d
iget-object v6, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v6}, Ljava/nio/ByteBuffer;->position()I
move-result v6
.line 71
iget-object v7, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v7}, Ljava/nio/ByteBuffer;->capacity()I
move-result v7
const/4 v8, 0x1
.line 74
:try_start_5a
iget-object v9, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
const/4 v10, 0x0
invoke-virtual {v9, p1, v10, v1}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
:try_end_60
.catch Ljava/nio/BufferOverflowException; {:try_start_5a .. :try_end_60} :catch_72
.line 84
:try_start_60
invoke-direct {p0, v2, v3}, Lcom/imo/android/imoim/network/NormalConnection;->handleMessage(J)V
:try_end_63
.catch Ljava/net/ProtocolException; {:try_start_60 .. :try_end_63} :catch_64
return-void
:catch_64
move-exception p1
.line 86
invoke-static {p1}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object p1
.line 2079
invoke-static {v0, p1, v8}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V
const-string p1, "proto"
.line 87
invoke-virtual {p0, p1}, Lcom/imo/android/imoim/network/NormalConnection;->handleError(Ljava/lang/String;)V
return-void
.line 76
:catch_72
new-instance p1, Ljava/lang/StringBuilder;
const-string v2, "BOE ret: "
invoke-direct {p1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " pos before: "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " cap before: "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " pos after: "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, " cap after: "
invoke-virtual {p1, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
.line 1079
invoke-static {v0, p1, v8}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V
const-string p1, "boe"
.line 79
invoke-virtual {p0, p1}, Lcom/imo/android/imoim/network/NormalConnection;->handleError(Ljava/lang/String;)V
return-void
.end method
.method public handleRead()[B
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/net/ProtocolException;
}
.end annotation
.line 232
:cond_0
:goto_0
iget v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
if-lez v0, :cond_19
.line 234
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
iget v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
if-lt v0, v1, :cond_9b
.line 236
new-array v0, v1, [B
.line 237
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
const/4 v1, 0x0
.line 238
iput v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
return-object v0
.line 244
:cond_19
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
const/16 v1, 0x10
if-lt v0, v1, :cond_9b
new-array v0, v1, [B
.line 246
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1, v0}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
.line 248
:try_start_2a
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget-boolean v1, v1, Lcom/imo/android/imoim/network/ConnectData3;->gotNameChannel:Z
if-eqz v1, :cond_3b
.line 249
sget-object v1, Lcom/imo/android/imoim/j/a;->a:Ljavax/crypto/SecretKey;
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->iv:[B
invoke-static {v0, v1, v2}, Lcom/imo/android/imoim/j/a;->a([BLjavax/crypto/SecretKey;[B)I
move-result v0
iput v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
goto :goto_45
.line 252
:cond_3b
sget-object v1, Lcom/imo/android/imoim/j/a;->b:Ljavax/crypto/SecretKey;
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->iv:[B
invoke-static {v0, v1, v2}, Lcom/imo/android/imoim/j/a;->b([BLjavax/crypto/SecretKey;[B)I
move-result v0
iput v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
:try_end_45
.catch Ljava/lang/Exception; {:try_start_2a .. :try_end_45} :catch_95
.line 259
:goto_45
iget v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
const-string v1, "msgLength "
if-ltz v0, :cond_81
const/high16 v2, 0x500000
if-gt v0, v2, :cond_6d
.line 264
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->readBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->capacity()I
move-result v1
if-le v0, v1, :cond_0
.line 265
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "need: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "NormalConnection"
.line 6071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_0
.line 263
:cond_6d
new-instance v0, Ljava/net/ProtocolException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/net/ProtocolException;-><init>(Ljava/lang/String;)V
throw v0
.line 260
:cond_81
new-instance v0, Ljava/net/ProtocolException;
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->msgLength:I
invoke-virtual {v2, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1}, Ljava/net/ProtocolException;-><init>(Ljava/lang/String;)V
throw v0
.line 256
:catch_95
new-instance v0, Ljava/net/ProtocolException;
invoke-direct {v0}, Ljava/net/ProtocolException;-><init>()V
throw v0
:cond_9b
const/4 v0, 0x0
return-object v0
.end method
.method public handleWrite()V
.registers 11
.line 130
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget-boolean v0, v0, Lcom/imo/android/imoim/network/ConnectData3;->shouldSendNameChannel:Z
if-eqz v0, :cond_33
const-string v0, "shouldSendNameChannel"
const-string v1, "NormalConnection"
.line 4071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
.line 132
invoke-static {}, Lcom/imo/android/imoim/network/NetworkLogger;->getInstance()Lcom/imo/android/imoim/network/NetworkLogger;
move-result-object v2
invoke-virtual {v2, v1, v0}, Lcom/imo/android/imoim/network/NetworkLogger;->log(Ljava/lang/String;Ljava/lang/String;)V
.line 133
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget-object v0, v0, Lcom/imo/android/imoim/network/ConnectData3;->ip:Ljava/lang/String;
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->zlib:Lcom/imo/android/imoim/util/eu;
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
invoke-virtual {v2}, Lcom/imo/android/imoim/network/ConnectData3;->needPadding()Z
move-result v2
invoke-static {v0, v1, v2}, Lcom/imo/android/imoim/network/Helper;->getNameChannelBytes(Ljava/lang/String;Lcom/imo/android/imoim/util/eu;Z)Ljava/nio/ByteBuffer;
move-result-object v0
iput-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
.line 134
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
const/4 v1, 0x0
iput-boolean v1, v0, Lcom/imo/android/imoim/network/ConnectData3;->shouldSendNameChannel:Z
.line 135
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v1
iput-wide v1, v0, Lcom/imo/android/imoim/network/ConnectData3;->tcpConnectedTime:J
.line 139
:cond_33
:goto_33
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
if-nez v0, :cond_6e
.line 140
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget-object v0, v0, Lcom/imo/android/imoim/network/ConnectData3;->queue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/imo/android/imoim/util/y;
if-nez v0, :cond_44
return-void
:cond_44
const/4 v1, 0x1
.line 145
invoke-virtual {v0, v1}, Lcom/imo/android/imoim/util/y;->a(Z)[B
move-result-object v1
.line 146
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->stream:Lcom/imo/android/imoim/network/StreamHelper;
iget-object v3, p0, Lcom/imo/android/imoim/network/NormalConnection;->zlib:Lcom/imo/android/imoim/util/eu;
invoke-virtual {v2, v1, v3}, Lcom/imo/android/imoim/network/StreamHelper;->json2Bytes([BLcom/imo/android/imoim/util/eu;)Ljava/nio/ByteBuffer;
move-result-object v1
iput-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
.line 147
iget-object v1, v0, Lcom/imo/android/imoim/util/y;->o:Lcom/imo/android/imoim/network/Dispatcher4$RequestInfo;
if-eqz v1, :cond_5d
.line 149
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v2
iput-wide v2, v1, Lcom/imo/android/imoim/network/Dispatcher4$RequestInfo;->realSendTs:J
.line 151
:cond_5d
iget-object v4, v0, Lcom/imo/android/imoim/util/y;->c:Ljava/lang/String;
iget-object v5, v0, Lcom/imo/android/imoim/util/y;->a:Ljava/lang/String;
iget-object v6, v0, Lcom/imo/android/imoim/util/y;->d:Ljava/lang/String;
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->limit()I
move-result v0
int-to-long v7, v0
const/4 v9, 0x0
invoke-static/range {v4 .. v9}, Lcom/imo/android/imoim/network/stat/TrafficReport;->reportRequestTraffic(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JZ)V
.line 154
:cond_6e
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
.line 155
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v1
.line 156
iget-object v2, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->position()I
move-result v2
.line 157
iget-object v3, p0, Lcom/imo/android/imoim/network/NormalConnection;->socketHandler:Lcom/imo/android/imoim/network/SocketHandler;
iget-object v4, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget v4, v4, Lcom/imo/android/imoim/network/ConnectData3;->fd:I
invoke-interface {v3, v4, v1, v2, v0}, Lcom/imo/android/imoim/network/SocketHandler;->handleWrite(I[BII)I
move-result v0
neg-int v1, v0
if-eqz v0, :cond_b3
if-gez v0, :cond_a1
const/16 v0, 0xb
if-eq v1, v0, :cond_b3
.line 172
invoke-static {v1}, Ljava/lang/String;->valueOf(I)Ljava/lang/String;
move-result-object v0
const-string v1, "write_err"
invoke-virtual {v1, v0}, Ljava/lang/String;->concat(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
invoke-virtual {p0, v0}, Lcom/imo/android/imoim/network/NormalConnection;->handleError(Ljava/lang/String;)V
return-void
.line 177
:cond_a1
iget-object v1, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
add-int/2addr v2, v0
invoke-virtual {v1, v2}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 178
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v0
if-nez v0, :cond_33
const/4 v0, 0x0
.line 179
iput-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
goto :goto_33
:cond_b3
return-void
.end method
.method public isClosed()Z
.registers 2
.line 186
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->attach:Lcom/imo/android/imoim/network/ConnectData3;
iget-boolean v0, v0, Lcom/imo/android/imoim/network/ConnectData3;->closed:Z
return v0
.end method
.method public remainWriteBuffer()Z
.registers 2
.line 211
iget-object v0, p0, Lcom/imo/android/imoim/network/NormalConnection;->writeBuffer:Ljava/nio/ByteBuffer;
if-eqz v0, :cond_6
const/4 v0, 0x1
return v0
:cond_6
const/4 v0, 0x0
return v0
.end method