FrontingThread.smali
.class public Lcom/imo/android/imoim/network/FrontingThread;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Ljava/lang/Runnable;
# static fields
.field public static final MSG_NC:I = 0x0
.field public static final MSG_SEND:I = 0x1
.field public static final MSG_SWITCH:I = 0x2
# instance fields
.field FRONTING_URL:Ljava/lang/String;
.field buffer:Ljava/nio/ByteBuffer;
.field byteBuff:[B
.field byteBuff2:[B
.field firstMessage:Z
.field msgLength:I
.field public msgQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/concurrent/ConcurrentLinkedQueue<",
"Landroid/os/Message;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
const-string v0, "imostream"
.line 25
invoke-static {v0}, Lsg/bigo/common/ab;->a(Ljava/lang/String;)V
return-void
.end method
.method public constructor <init>()V
.registers 3
.line 44
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const-string v0, "https://www.appspot.com"
.line 28
iput-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->FRONTING_URL:Ljava/lang/String;
const/4 v0, -0x1
.line 39
iput v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
const/4 v0, 0x0
.line 40
iput-boolean v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->firstMessage:Z
.line 42
new-instance v0, Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-direct {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;-><init>()V
iput-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
const/16 v0, 0x7d00
new-array v1, v0, [B
.line 45
iput-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->byteBuff:[B
new-array v0, v0, [B
.line 46
iput-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->byteBuff2:[B
const/16 v0, 0x400
.line 47
invoke-static {v0}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v0
iput-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
.line 48
invoke-static {}, Lcom/imo/android/imoim/gcm/MyFCMListenerService;->a()Ljava/lang/String;
move-result-object v0
if-eqz v0, :cond_43
.line 50
iput-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->FRONTING_URL:Ljava/lang/String;
.line 51
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "replacing url: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->FRONTING_URL:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "FrontingThread"
.line 1071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
:cond_43
return-void
.end method
# virtual methods
.method public parseMessage()V
.registers 12
.line 83
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
.line 85
:goto_5
iget v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
const/4 v1, -0x1
if-ne v0, v1, :cond_1c
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
const/4 v2, 0x4
if-lt v0, v2, :cond_1c
.line 86
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->getInt()I
move-result v0
iput v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
goto :goto_5
.line 87
:cond_1c
iget v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
if-eq v0, v1, :cond_59
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
iget v2, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
if-lt v0, v2, :cond_59
.line 88
new-array v0, v2, [B
.line 89
iget-object v2, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v2, v0}, Ljava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
.line 91
:try_start_31
new-instance v5, Lorg/json/JSONObject;
new-instance v2, Ljava/lang/String;
invoke-direct {v2, v0}, Ljava/lang/String;-><init>([B)V
invoke-direct {v5, v2}, Lorg/json/JSONObject;-><init>(Ljava/lang/String;)V
.line 92
sget-object v3, Lcom/imo/android/imoim/IMO;->c:Lcom/imo/android/imoim/network/Dispatcher4;
const-string v4, "tcp"
const/4 v6, 0x0
iget v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
int-to-long v7, v0
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v9
invoke-virtual/range {v3 .. v10}, Lcom/imo/android/imoim/network/Dispatcher4;->onMessageFromOtherThread(Ljava/lang/String;Lorg/json/JSONObject;ZJJ)V
:try_end_4a
.catch Ljava/lang/Exception; {:try_start_31 .. :try_end_4a} :catch_4b
goto :goto_56
:catch_4b
move-exception v0
.line 94
invoke-virtual {v0}, Ljava/lang/Exception;->toString()Ljava/lang/String;
move-result-object v0
const/4 v2, 0x1
const-string v3, "FrontingThread"
.line 1079
invoke-static {v3, v0, v2}, Lcom/imo/android/imoim/util/bt;->a(Ljava/lang/String;Ljava/lang/String;Z)V
.line 96
:goto_56
iput v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
goto :goto_5
.line 101
:cond_59
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->compact()Ljava/nio/ByteBuffer;
return-void
.end method
.method public receivedData(I)V
.registers 5
.line 127
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->capacity()I
move-result v0
iget-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->position()I
move-result v1
sub-int/2addr v0, v1
if-le p1, v0, :cond_26
.line 128
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->position()I
move-result v0
add-int/2addr v0, p1
invoke-static {v0}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v0
.line 129
iget-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
.line 130
iget-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
.line 131
iput-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
.line 133
:cond_26
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
iget-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->byteBuff2:[B
const/4 v2, 0x0
invoke-virtual {v0, v1, v2, p1}, Ljava/nio/ByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
return-void
.end method
.method public native reconnect([BLjava/lang/String;[B)V
.end method
.method public native recv([BLjava/lang/String;[B)V
.end method
.method public run()V
.registers 4
.line 59
:goto_0
invoke-virtual {p0}, Lcom/imo/android/imoim/network/FrontingThread;->tick()V
.line 60
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->isEmpty()Z
move-result v0
if-nez v0, :cond_5b
.line 61
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgQueue:Ljava/util/concurrent/ConcurrentLinkedQueue;
invoke-virtual {v0}, Ljava/util/concurrent/ConcurrentLinkedQueue;->poll()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroid/os/Message;
.line 62
iget v1, v0, Landroid/os/Message;->what:I
if-nez v1, :cond_1b
.line 63
invoke-virtual {p0}, Lcom/imo/android/imoim/network/FrontingThread;->sendNameChannel()V
goto :goto_5b
.line 64
:cond_1b
iget v1, v0, Landroid/os/Message;->what:I
const/4 v2, 0x1
if-ne v1, v2, :cond_54
.line 65
iget-boolean v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->firstMessage:Z
if-eqz v1, :cond_50
.line 66
iget-object v0, v0, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast v0, Lcom/imo/android/imoim/util/y;
.line 67
invoke-virtual {v0, v2}, Lcom/imo/android/imoim/util/y;->a(Z)[B
move-result-object v0
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
iget-object v2, p0, Lcom/imo/android/imoim/network/FrontingThread;->FRONTING_URL:Ljava/lang/String;
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v2, "/dispatcher_recv"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
iget-object v2, p0, Lcom/imo/android/imoim/network/FrontingThread;->byteBuff2:[B
invoke-virtual {p0, v0, v1, v2}, Lcom/imo/android/imoim/network/FrontingThread;->recv([BLjava/lang/String;[B)V
.line 68
iget-object v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->buffer:Ljava/nio/ByteBuffer;
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
const/4 v0, -0x1
.line 69
iput v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->msgLength:I
const/4 v0, 0x0
.line 70
iput-boolean v0, p0, Lcom/imo/android/imoim/network/FrontingThread;->firstMessage:Z
goto :goto_5b
.line 72
:cond_50
invoke-virtual {p0, v0}, Lcom/imo/android/imoim/network/FrontingThread;->sendMessage(Landroid/os/Message;)V
goto :goto_5b
.line 74
:cond_54
iget v0, v0, Landroid/os/Message;->what:I
const/4 v1, 0x2
if-ne v0, v1, :cond_5b
.line 75
iput-boolean v2, p0, Lcom/imo/android/imoim/network/FrontingThread;->firstMessage:Z
.line 78
:cond_5b
:goto_5b
invoke-virtual {p0}, Lcom/imo/android/imoim/network/FrontingThread;->parseMessage()V
goto :goto_0
.end method
.method public native send([BLjava/lang/String;)V
.end method
.method public sendMessage(Landroid/os/Message;)V
.registers 4
.line 105
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
iget-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->FRONTING_URL:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, "/dispatcher_send"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 106
iget-object p1, p1, Landroid/os/Message;->obj:Ljava/lang/Object;
check-cast p1, Lcom/imo/android/imoim/util/y;
const/4 v1, 0x0
invoke-virtual {p1, v1}, Lcom/imo/android/imoim/util/y;->a(Z)[B
move-result-object p1
.line 107
invoke-virtual {p0, p1, v0}, Lcom/imo/android/imoim/network/FrontingThread;->send([BLjava/lang/String;)V
return-void
.end method
.method public sendNameChannel()V
.registers 5
.line 112
new-instance v0, Ljava/lang/StringBuilder;
invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V
iget-object v1, p0, Lcom/imo/android/imoim/network/FrontingThread;->FRONTING_URL:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, "/dispatcher_nc"
invoke-virtual {v0, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
.line 115
:try_start_13
new-instance v1, Lorg/json/JSONObject;
invoke-direct {v1}, Lorg/json/JSONObject;-><init>()V
const-string v2, "method"
const-string v3, "name_channel"
invoke-virtual {v1, v2, v3}, Lorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
move-result-object v1
.line 116
invoke-virtual {v1}, Lorg/json/JSONObject;->toString()Ljava/lang/String;
move-result-object v1
const-string v2, "UTF-8"
invoke-virtual {v1, v2}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v1
iget-object v2, p0, Lcom/imo/android/imoim/network/FrontingThread;->byteBuff:[B
invoke-virtual {p0, v1, v0, v2}, Lcom/imo/android/imoim/network/FrontingThread;->reconnect([BLjava/lang/String;[B)V
:try_end_2f
.catch Ljava/lang/Exception; {:try_start_13 .. :try_end_2f} :catch_30
return-void
:catch_30
move-exception v0
.line 118
new-instance v1, Ljava/lang/StringBuilder;
const-string v2, "Exception: "
invoke-direct {v1, v2}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0}, Ljava/lang/Exception;->getMessage()Ljava/lang/String;
move-result-object v0
invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v0
const-string v1, "FrontingThread"
.line 2071
invoke-static {v1, v0}, Lcom/imo/android/imoim/util/bt;->d(Ljava/lang/String;Ljava/lang/String;)V
return-void
.end method
.method public native tick()V
.end method