DnsUdpResolver.smali
.class public Lcom/qiniu/android/dns/dns/DnsUdpResolver;
.super Lcom/qiniu/android/dns/dns/DnsResolver;
.source "DnsUdpResolver.java"
# static fields
.field private static final DnsUdpPort:I
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x155a
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/qiniu/android/dns/dns/DnsUdpResolver;->DnsUdpPort:I
return-void
.end method
.method public constructor <init>(Ljava/lang/String;)V
.registers 2
.param p1, "serverIP" # Ljava/lang/String;
.line 15
invoke-direct {p0, p1}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>(Ljava/lang/String;)V
.line 16
return-void
.end method
.method public constructor <init>(Ljava/lang/String;I)V
.registers 3
.param p1, "serverIP" # Ljava/lang/String;
.param p2, "timeout" # I
.line 19
invoke-direct {p0, p1, p2}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>(Ljava/lang/String;I)V
.line 20
return-void
.end method
.method public constructor <init>(Ljava/lang/String;II)V
.registers 4
.param p1, "serverIP" # Ljava/lang/String;
.param p2, "recordType" # I
.param p3, "timeout" # I
.line 23
invoke-direct {p0, p1, p2, p3}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>(Ljava/lang/String;II)V
.line 24
return-void
.end method
.method public constructor <init>([Ljava/lang/String;II)V
.registers 4
.param p1, "serverIPs" # [Ljava/lang/String;
.param p2, "recordType" # I
.param p3, "timeout" # I
.line 27
invoke-direct {p0, p1, p2, p3}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>([Ljava/lang/String;II)V
.line 28
return-void
.end method
.method public constructor <init>([Ljava/lang/String;IILjava/util/concurrent/ExecutorService;)V
.registers 5
.param p1, "serverIPs" # [Ljava/lang/String;
.param p2, "recordType" # I
.param p3, "timeout" # I
.param p4, "executorService" # Ljava/util/concurrent/ExecutorService;
.line 31
invoke-direct {p0, p1, p2, p3, p4}, Lcom/qiniu/android/dns/dns/DnsResolver;-><init>([Ljava/lang/String;IILjava/util/concurrent/ExecutorService;)V
.line 32
return-void
.end method
# virtual methods
.method request(Lcom/qiniu/android/dns/dns/DnsResolver$RequestCanceller;Ljava/lang/String;Ljava/lang/String;I)Lcom/qiniu/android/dns/dns/DnsResponse;
.registers 21
.param p1, "canceller" # Lcom/qiniu/android/dns/dns/DnsResolver$RequestCanceller;
.param p2, "server" # Ljava/lang/String;
.param p3, "host" # Ljava/lang/String;
.param p4, "recordType" # I
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 36
move-object/from16 v1, p0
invoke-static {}, Ljava/lang/Math;->random()D
move-result-wide v2
.line 37
.local v2, "d":D
const-wide v4, 0x40efffe000000000L # 65535.0
mul-double v4, v4, v2
double-to-int v0, v4
int-to-short v4, v0
.line 38
.local v4, "messageId":S
new-instance v0, Lcom/qiniu/android/dns/dns/DnsRequest;
move-object/from16 v5, p3
move/from16 v6, p4
invoke-direct {v0, v4, v6, v5}, Lcom/qiniu/android/dns/dns/DnsRequest;-><init>(SILjava/lang/String;)V
move-object v7, v0
.line 39
.local v7, "request":Lcom/qiniu/android/dns/dns/DnsRequest;
invoke-virtual {v7}, Lcom/qiniu/android/dns/dns/DnsRequest;->toDnsQuestionData()[B
move-result-object v8
.line 41
.local v8, "requestData":[B
invoke-static/range {p2 .. p2}, Ljava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;
move-result-object v9
.line 42
.local v9, "address":Ljava/net/InetAddress;
const/4 v10, 0x0
.line 44
.local v10, "socket":Ljava/net/DatagramSocket;
:try_start_22
new-instance v0, Ljava/net/DatagramSocket;
invoke-direct {v0}, Ljava/net/DatagramSocket;-><init>()V
move-object v10, v0
.line 45
new-instance v0, Ljava/net/DatagramPacket;
array-length v11, v8
const/16 v12, 0x35
invoke-direct {v0, v8, v11, v9, v12}, Ljava/net/DatagramPacket;-><init>([BILjava/net/InetAddress;I)V
.line 47
.local v0, "packet":Ljava/net/DatagramPacket;
iget v11, v1, Lcom/qiniu/android/dns/dns/DnsUdpResolver;->timeout:I
mul-int/lit16 v11, v11, 0x3e8
invoke-virtual {v10, v11}, Ljava/net/DatagramSocket;->setSoTimeout(I)V
.line 49
move-object v11, v10
.line 50
.local v11, "finalSocket":Ljava/net/DatagramSocket;
new-instance v12, Lcom/qiniu/android/dns/dns/DnsUdpResolver$1;
invoke-direct {v12, v1, v11}, Lcom/qiniu/android/dns/dns/DnsUdpResolver$1;-><init>(Lcom/qiniu/android/dns/dns/DnsUdpResolver;Ljava/net/DatagramSocket;)V
:try_end_3d
.catchall {:try_start_22 .. :try_end_3d} :catchall_67
move-object/from16 v13, p1
:try_start_3f
invoke-virtual {v13, v12}, Lcom/qiniu/android/dns/dns/DnsResolver$RequestCanceller;->addCancelAction(Ljava/lang/Runnable;)V
.line 66
invoke-virtual {v10, v0}, Ljava/net/DatagramSocket;->send(Ljava/net/DatagramPacket;)V
.line 67
new-instance v12, Ljava/net/DatagramPacket;
const/16 v14, 0x5dc
new-array v15, v14, [B
invoke-direct {v12, v15, v14}, Ljava/net/DatagramPacket;-><init>([BI)V
move-object v0, v12
.line 68
invoke-virtual {v10, v0}, Ljava/net/DatagramSocket;->receive(Ljava/net/DatagramPacket;)V
.line 69
new-instance v12, Lcom/qiniu/android/dns/dns/DnsResponse;
const/4 v14, 0x4
invoke-virtual {v0}, Ljava/net/DatagramPacket;->getData()[B
move-result-object v15
:try_end_59
.catchall {:try_start_3f .. :try_end_59} :catchall_65
move-object/from16 v1, p2
:try_start_5b
invoke-direct {v12, v1, v14, v7, v15}, Lcom/qiniu/android/dns/dns/DnsResponse;-><init>(Ljava/lang/String;ILcom/qiniu/android/dns/dns/DnsRequest;[B)V
:try_end_5e
.catchall {:try_start_5b .. :try_end_5e} :catchall_63
.line 71
nop
.line 72
invoke-virtual {v10}, Ljava/net/DatagramSocket;->close()V
.line 69
return-object v12
.line 71
.end local v0 # "packet":Ljava/net/DatagramPacket;
.end local v11 # "finalSocket":Ljava/net/DatagramSocket;
:catchall_63
move-exception v0
goto :goto_6c
:catchall_65
move-exception v0
goto :goto_6a
:catchall_67
move-exception v0
move-object/from16 v13, p1
:goto_6a
move-object/from16 v1, p2
:goto_6c
if-eqz v10, :cond_71
.line 72
invoke-virtual {v10}, Ljava/net/DatagramSocket;->close()V
.line 74
:cond_71
throw v0
.end method