RongHttpDns.smali
.class public final Lio/rong/imlib/httpdns/RongHttpDns;
.super Ljava/lang/Object;
.source "RongHttpDns.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lio/rong/imlib/httpdns/RongHttpDns$CompletionHandler;,
Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
}
.end annotation
# static fields
.field private static final ACCOUNT_ID_MAX_LEN:I = 0x40
.field private static final SECRET_MAX_LEN:I = 0x40
.field private static final SECRET_MIN_LEN:I = 0x8
.field private static volatile httpDns:Lio/rong/imlib/httpdns/RongHttpDns;
# instance fields
.field private cachePolicy:Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
.field private final context:Landroid/content/Context;
.field private hostWhiteList:[Ljava/lang/String;
.field private final httpDnsCache:Lio/rong/imlib/httpdns/HostCacheManager;
.field private final httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
.field private lastReqTimeForExpiredHosts:J
.field private networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
.field private preResolveNum:I
.field private preResolveStartTime:J
# direct methods
.method private constructor <init>(Landroid/content/Context;)V
.registers 6
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/4 v0, 0x2
.line 2
new-array v0, v0, [Ljava/lang/String;
const/4 v1, 0x0
const-string v2, "nav.cn.ronghub.com"
aput-object v2, v0, v1
const/4 v2, 0x1
const-string v3, "rtc-info.ronghub.com"
aput-object v3, v0, v2
iput-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->hostWhiteList:[Ljava/lang/String;
.line 3
invoke-static {}, Lio/rong/imlib/httpdns/HttpDnsClient;->getInstance()Lio/rong/imlib/httpdns/HttpDnsClient;
move-result-object v0
iput-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
.line 4
new-instance v0, Lio/rong/imlib/httpdns/HostCacheManager;
const-string v2, "HTTPDNS"
invoke-direct {v0, v2, v1}, Lio/rong/imlib/httpdns/HostCacheManager;-><init>(Ljava/lang/String;Z)V
iput-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsCache:Lio/rong/imlib/httpdns/HostCacheManager;
.line 5
sget-object v0, Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;->POLICY_TOLERANT:Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
iput-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->cachePolicy:Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
.line 6
iput-object p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->context:Landroid/content/Context;
.line 7
invoke-direct {p0}, Lio/rong/imlib/httpdns/RongHttpDns;->registerNetworkChangeReceiver()V
.line 8
iget-object p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
invoke-virtual {p1}, Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;->refreshIpReachable()V
.line 9
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v0
iput-wide v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->lastReqTimeForExpiredHosts:J
return-void
.end method
.method private allowSendRequest(J)Z
.registers 6
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
invoke-virtual {v0}, Lio/rong/imlib/httpdns/HttpDnsClient;->getPreResolveFinish()Z
move-result v0
if-nez v0, :cond_1c
iget-wide v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveStartTime:J
sub-long/2addr p1, v0
const-wide/16 v0, 0x3e8
cmp-long v2, p1, v0
if-lez v2, :cond_1a
iget-object p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
.line 2
invoke-virtual {p1}, Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;->isIPv6Only()Z
move-result p1
if-nez p1, :cond_1a
goto :goto_1c
:cond_1a
const/4 p1, 0x0
goto :goto_1d
:cond_1c
:goto_1c
const/4 p1, 0x1
:goto_1d
return p1
.end method
.method private filterHostRequest(Ljava/lang/String;)Z
.registers 3
.line 1
invoke-static {p1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v0
if-nez v0, :cond_14
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->hostWhiteList:[Ljava/lang/String;
invoke-static {v0}, Ljava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
move-result-object v0
invoke-interface {v0, p1}, Ljava/util/List;->contains(Ljava/lang/Object;)Z
move-result p1
if-nez p1, :cond_14
const/4 p1, 0x1
goto :goto_15
:cond_14
const/4 p1, 0x0
:goto_15
return p1
.end method
.method public static getService(Landroid/content/Context;)Lio/rong/imlib/httpdns/RongHttpDns;
.registers 3
.line 1
sget-object v0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDns:Lio/rong/imlib/httpdns/RongHttpDns;
if-nez v0, :cond_17
.line 2
const-class v0, Lio/rong/imlib/httpdns/RongHttpDns;
monitor-enter v0
.line 3
:try_start_7
sget-object v1, Lio/rong/imlib/httpdns/RongHttpDns;->httpDns:Lio/rong/imlib/httpdns/RongHttpDns;
if-nez v1, :cond_12
.line 4
new-instance v1, Lio/rong/imlib/httpdns/RongHttpDns;
invoke-direct {v1, p0}, Lio/rong/imlib/httpdns/RongHttpDns;-><init>(Landroid/content/Context;)V
sput-object v1, Lio/rong/imlib/httpdns/RongHttpDns;->httpDns:Lio/rong/imlib/httpdns/RongHttpDns;
.line 5
:cond_12
monitor-exit v0
goto :goto_17
:catchall_14
move-exception p0
monitor-exit v0
:try_end_16
.catchall {:try_start_7 .. :try_end_16} :catchall_14
throw p0
.line 6
:cond_17
:goto_17
sget-object p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDns:Lio/rong/imlib/httpdns/RongHttpDns;
return-object p0
.end method
.method private registerNetworkChangeReceiver()V
.registers 4
.line 1
new-instance v0, Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
invoke-direct {v0}, Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;-><init>()V
iput-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
.line 2
new-instance v0, Landroid/content/IntentFilter;
invoke-direct {v0}, Landroid/content/IntentFilter;-><init>()V
const-string v1, "android.net.conn.CONNECTIVITY_CHANGE"
.line 3
invoke-virtual {v0, v1}, Landroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
.line 4
iget-object v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->context:Landroid/content/Context;
iget-object v2, p0, Lio/rong/imlib/httpdns/RongHttpDns;->networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
invoke-virtual {v1, v2, v0}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
return-void
.end method
# virtual methods
.method public asyncResolve(Ljava/lang/String;Lio/rong/imlib/httpdns/RongHttpDns$CompletionHandler;Lio/rong/imlib/httpdns/HttpDnsCompletion;)V
.registers 9
.line 1
invoke-static {p1}, Lio/rong/imlib/httpdns/RongHttpDnsUtil;->validateIpv4(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_1f
.line 2
new-instance p3, Ljava/util/ArrayList;
invoke-direct {p3}, Ljava/util/ArrayList;-><init>()V
.line 3
invoke-virtual {p3, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 4
invoke-static {}, Lio/rong/imlib/httpdns/ThreadPool;->getInstance()Lio/rong/imlib/httpdns/ThreadPool;
move-result-object p1
invoke-virtual {p1}, Lio/rong/imlib/httpdns/ThreadPool;->getExecutor()Ljava/util/concurrent/Executor;
move-result-object p1
new-instance v0, Lio/rong/imlib/httpdns/RongHttpDns$1;
invoke-direct {v0, p0, p2, p3}, Lio/rong/imlib/httpdns/RongHttpDns$1;-><init>(Lio/rong/imlib/httpdns/RongHttpDns;Lio/rong/imlib/httpdns/RongHttpDns$CompletionHandler;Ljava/util/ArrayList;)V
invoke-interface {p1, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
return-void
.line 5
:cond_1f
invoke-static {p1}, Lio/rong/imlib/httpdns/RongHttpDnsUtil;->validateIpv6(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_46
.line 6
new-instance p3, Ljava/util/ArrayList;
invoke-direct {p3}, Ljava/util/ArrayList;-><init>()V
const-string v0, "[\\[\\]]"
const-string v1, ""
.line 7
invoke-virtual {p1, v0, v1}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
.line 8
invoke-virtual {p3, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 9
invoke-static {}, Lio/rong/imlib/httpdns/ThreadPool;->getInstance()Lio/rong/imlib/httpdns/ThreadPool;
move-result-object p1
invoke-virtual {p1}, Lio/rong/imlib/httpdns/ThreadPool;->getExecutor()Ljava/util/concurrent/Executor;
move-result-object p1
new-instance v0, Lio/rong/imlib/httpdns/RongHttpDns$2;
invoke-direct {v0, p0, p2, p3}, Lio/rong/imlib/httpdns/RongHttpDns$2;-><init>(Lio/rong/imlib/httpdns/RongHttpDns;Lio/rong/imlib/httpdns/RongHttpDns$CompletionHandler;Ljava/util/ArrayList;)V
invoke-interface {p1, v0}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
return-void
.line 10
:cond_46
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsCache:Lio/rong/imlib/httpdns/HostCacheManager;
invoke-virtual {v0, p1}, Lio/rong/imlib/httpdns/HostCacheManager;->getHostCacheEntry(Ljava/lang/String;)Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;
move-result-object v0
.line 11
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v1
.line 12
new-instance v3, Ljava/util/ArrayList;
invoke-direct {v3}, Ljava/util/ArrayList;-><init>()V
.line 13
invoke-direct {p0, v1, v2}, Lio/rong/imlib/httpdns/RongHttpDns;->allowSendRequest(J)Z
move-result v1
const/4 v2, 0x0
const/4 v4, 0x1
if-eqz v1, :cond_77
if-eqz v0, :cond_65
.line 14
invoke-virtual {v0}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->isExpired()Z
move-result v1
if-eqz v1, :cond_68
.line 15
:cond_65
invoke-virtual {v3, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:cond_68
if-nez p3, :cond_71
.line 16
new-instance p3, Lio/rong/imlib/httpdns/HttpDnsCompletion;
iget-object v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->context:Landroid/content/Context;
invoke-direct {p3, v1}, Lio/rong/imlib/httpdns/HttpDnsCompletion;-><init>(Landroid/content/Context;)V
.line 17
:cond_71
iget-object v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
invoke-virtual {v1, v3, p3}, Lio/rong/imlib/httpdns/HttpDnsClient;->splitHostsAndSendRequest(Ljava/util/ArrayList;Lio/rong/imlib/httpdns/HttpDnsClient$AsyncHttpDnsCompletion;)V
goto :goto_80
.line 18
:cond_77
new-array p3, v4, [Ljava/lang/Object;
aput-object p1, p3, v2
const-string v1, "please wait a moment to send request for %s, until preResolve finished or has passed 1000ms "
invoke-static {v1, p3}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
:goto_80
if-eqz v0, :cond_b9
.line 19
invoke-virtual {v0}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->isExpired()Z
move-result p3
if-eqz p3, :cond_8b
.line 20
sget-object p3, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;->RESOLVE_FROM_HTTPDNS_EXPIRED_CACHE:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;
goto :goto_8d
.line 21
:cond_8b
sget-object p3, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;->RESOLVE_FROM_HTTPDNS_CACHE:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;
:goto_8d
const/4 v1, 0x3
.line 22
new-array v1, v1, [Ljava/lang/Object;
aput-object p1, v1, v2
.line 23
invoke-virtual {v0}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->getIpv4List()Ljava/util/ArrayList;
move-result-object p1
invoke-virtual {p1}, Ljava/util/ArrayList;->toString()Ljava/lang/String;
move-result-object p1
aput-object p1, v1, v4
const/4 p1, 0x2
invoke-virtual {p3}, Ljava/lang/Enum;->toString()Ljava/lang/String;
move-result-object v2
aput-object v2, v1, p1
const-string p1, "Async resolve successful, host(%s) ipv4List(%s) resolveType(%s)"
.line 24
invoke-static {p1, v1}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
.line 25
invoke-static {}, Lio/rong/imlib/httpdns/ThreadPool;->getInstance()Lio/rong/imlib/httpdns/ThreadPool;
move-result-object p1
invoke-virtual {p1}, Lio/rong/imlib/httpdns/ThreadPool;->getExecutor()Ljava/util/concurrent/Executor;
move-result-object p1
new-instance v1, Lio/rong/imlib/httpdns/RongHttpDns$3;
invoke-direct {v1, p0, p2, p3, v0}, Lio/rong/imlib/httpdns/RongHttpDns$3;-><init>(Lio/rong/imlib/httpdns/RongHttpDns;Lio/rong/imlib/httpdns/RongHttpDns$CompletionHandler;Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;)V
invoke-interface {p1, v1}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
goto :goto_d2
.line 26
:cond_b9
new-array p3, v4, [Ljava/lang/Object;
aput-object p1, p3, v2
const-string p1, "Async resolve failed, host(%s), find no httpdns cache entry "
invoke-static {p1, p3}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
.line 27
invoke-static {}, Lio/rong/imlib/httpdns/ThreadPool;->getInstance()Lio/rong/imlib/httpdns/ThreadPool;
move-result-object p1
invoke-virtual {p1}, Lio/rong/imlib/httpdns/ThreadPool;->getExecutor()Ljava/util/concurrent/Executor;
move-result-object p1
new-instance p3, Lio/rong/imlib/httpdns/RongHttpDns$4;
invoke-direct {p3, p0, p2}, Lio/rong/imlib/httpdns/RongHttpDns$4;-><init>(Lio/rong/imlib/httpdns/RongHttpDns;Lio/rong/imlib/httpdns/RongHttpDns$CompletionHandler;)V
invoke-interface {p1, p3}, Ljava/util/concurrent/Executor;->execute(Ljava/lang/Runnable;)V
:goto_d2
return-void
.end method
.method getCachePolicy()Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
.registers 2
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->cachePolicy:Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
return-object v0
.end method
.method getHttpDnsCache()Lio/rong/imlib/httpdns/HostCacheManager;
.registers 2
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsCache:Lio/rong/imlib/httpdns/HostCacheManager;
return-object v0
.end method
.method getHttpDnsClient()Lio/rong/imlib/httpdns/HttpDnsClient;
.registers 2
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
return-object v0
.end method
.method getNetworkStateChangeReceiver()Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
.registers 2
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
return-object v0
.end method
.method getPreResolveNum()I
.registers 2
.line 1
iget v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveNum:I
return v0
.end method
.method public setAccountID(Ljava/lang/String;)V
.registers 5
.line 1
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v0
const/16 v1, 0x40
if-gt v0, v1, :cond_e
.line 2
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
invoke-virtual {v0, p1}, Lio/rong/imlib/httpdns/HttpDnsClient;->setAccountID(Ljava/lang/String;)V
return-void
.line 3
:cond_e
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "accountID length("
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 4
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p1, ") is bigger than 64"
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public setCachePolicy(Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;)V
.registers 5
.line 1
iput-object p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->cachePolicy:Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
.line 2
sget-object v0, Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;->POLICY_STRICT:Lio/rong/imlib/httpdns/RongHttpDns$CachePolicy;
const/4 v1, 0x1
const/4 v2, 0x0
if-ne p1, v0, :cond_e
.line 3
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsCache:Lio/rong/imlib/httpdns/HostCacheManager;
invoke-virtual {v0, v1}, Lio/rong/imlib/httpdns/HostCacheManager;->setStrictCachePolicy(Z)V
goto :goto_13
.line 4
:cond_e
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsCache:Lio/rong/imlib/httpdns/HostCacheManager;
invoke-virtual {v0, v2}, Lio/rong/imlib/httpdns/HostCacheManager;->setStrictCachePolicy(Z)V
.line 5
:goto_13
new-array v0, v1, [Ljava/lang/Object;
invoke-virtual {p1}, Ljava/lang/Enum;->name()Ljava/lang/String;
move-result-object p1
aput-object p1, v0, v2
const-string p1, "Set cache policy to %s"
invoke-static {p1, v0}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.end method
.method public setHttpsRequestEnable(Z)V
.registers 4
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
invoke-virtual {v0, p1}, Lio/rong/imlib/httpdns/HttpDnsClient;->setHttps(Z)V
const/4 v0, 0x1
.line 2
new-array v0, v0, [Ljava/lang/Object;
invoke-static {p1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object p1
const/4 v1, 0x0
aput-object p1, v0, v1
const-string p1, "Set https enabled to %b"
invoke-static {p1, v0}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.end method
.method public setLogEnable(Z)V
.registers 4
.line 1
invoke-static {p1}, Lio/rong/imlib/httpdns/Logger;->setLogEnable(Z)V
const/4 v0, 0x1
.line 2
new-array v0, v0, [Ljava/lang/Object;
invoke-static {p1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object p1
const/4 v1, 0x0
aput-object p1, v0, v1
const-string p1, "Set debug log enabled to %b"
invoke-static {p1, v0}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.end method
.method public setNetworkSwitchPolicy(ZZ)V
.registers 5
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
invoke-virtual {v0, p1}, Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;->setClearCache(Z)V
.line 2
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->networkStateChangeReceiver:Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;
invoke-virtual {v0, p2}, Lio/rong/imlib/httpdns/RongNetworkStateChangeReceiver;->setHttpDnsPrefetch(Z)V
const/4 v0, 0x2
.line 3
new-array v0, v0, [Ljava/lang/Object;
.line 4
invoke-static {p1}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object p1
const/4 v1, 0x0
aput-object p1, v0, v1
invoke-static {p2}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object p1
const/4 p2, 0x1
aput-object p1, v0, p2
const-string p1, "Set network change policy, clearCache(%b), httpDnsPrefetch(%b)"
.line 5
invoke-static {p1, v0}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.end method
.method public setPreResolveHosts(Ljava/util/ArrayList;Lio/rong/imlib/httpdns/HttpDnsCompletion;)V
.registers 9
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Ljava/lang/String;",
">;",
"Lio/rong/imlib/httpdns/HttpDnsCompletion;",
")V"
}
.end annotation
.line 1
invoke-virtual {p1}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v0
.line 2
:cond_4
:goto_4
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_1a
.line 3
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/lang/String;
.line 4
invoke-direct {p0, v1}, Lio/rong/imlib/httpdns/RongHttpDns;->filterHostRequest(Ljava/lang/String;)Z
move-result v1
if-eqz v1, :cond_4
.line 5
invoke-interface {v0}, Ljava/util/Iterator;->remove()V
goto :goto_4
.line 6
:cond_1a
invoke-virtual {p1}, Ljava/util/ArrayList;->size()I
move-result v0
const/4 v1, 0x0
if-gtz v0, :cond_29
.line 7
new-array p1, v1, [Ljava/lang/Object;
const-string p2, "Set pre resolve hosts error, get empty hosts"
invoke-static {p2, p1}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.line 8
:cond_29
new-instance v0, Ljava/util/ArrayList;
new-instance v2, Ljava/util/HashSet;
invoke-direct {v2, p1}, Ljava/util/HashSet;-><init>(Ljava/util/Collection;)V
invoke-direct {v0, v2}, Ljava/util/ArrayList;-><init>(Ljava/util/Collection;)V
.line 9
iget-object p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
invoke-virtual {p1}, Lio/rong/imlib/httpdns/HttpDnsClient;->getMaxHostNum()I
move-result p1
.line 10
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v2
const/4 v3, 0x1
if-le v2, p1, :cond_60
const/4 p2, 0x3
.line 11
new-array p2, p2, [Ljava/lang/Object;
.line 12
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v0
invoke-static {v0}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
aput-object v0, p2, v1
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v0
aput-object v0, p2, v3
const/4 v0, 0x2
invoke-static {p1}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object p1
aput-object p1, p2, v0
const-string p1, "The current number of hosts is %d, and the max supported size is %s.Please reduce it to %s or less."
.line 13
invoke-static {p1, p2}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
goto :goto_bb
.line 14
:cond_60
iget p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveNum:I
add-int/2addr p1, v3
iput p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveNum:I
.line 15
iget p1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveNum:I
if-le p1, v3, :cond_70
.line 16
new-array p1, v1, [Ljava/lang/Object;
const-string v2, "You have already set PreResolveHosts, it is best to set it only once."
invoke-static {v2, p1}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
.line 17
:cond_70
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v4
iput-wide v4, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveStartTime:J
.line 18
new-instance p1, Ljava/lang/StringBuilder;
invoke-direct {p1}, Ljava/lang/StringBuilder;-><init>()V
const/4 v2, 0x0
.line 19
:goto_7c
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v4
if-ge v2, v4, :cond_93
.line 20
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/lang/String;
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v4, ","
invoke-virtual {p1, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
add-int/lit8 v2, v2, 0x1
goto :goto_7c
.line 21
:cond_93
invoke-virtual {p1}, Ljava/lang/StringBuilder;->length()I
move-result v0
if-lez v0, :cond_bb
.line 22
invoke-virtual {p1}, Ljava/lang/StringBuilder;->length()I
move-result v0
sub-int/2addr v0, v3
invoke-virtual {p1, v1, v0}, Ljava/lang/StringBuilder;->substring(II)Ljava/lang/String;
move-result-object p1
.line 23
new-array v0, v3, [Ljava/lang/Object;
aput-object p1, v0, v1
const-string v1, "Set pre resolve hosts: %s"
invoke-static {v1, v0}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
if-nez p2, :cond_b4
.line 24
new-instance p2, Lio/rong/imlib/httpdns/HttpDnsCompletion;
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->context:Landroid/content/Context;
invoke-direct {p2, v0}, Lio/rong/imlib/httpdns/HttpDnsCompletion;-><init>(Landroid/content/Context;)V
.line 25
:cond_b4
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
sget-object v1, Lio/rong/imlib/httpdns/HttpDnsClient$RequestParamType;->DNLIST_HOSTS:Lio/rong/imlib/httpdns/HttpDnsClient$RequestParamType;
invoke-virtual {v0, p1, v1, p2}, Lio/rong/imlib/httpdns/HttpDnsClient;->asyncSendRequest(Ljava/lang/String;Lio/rong/imlib/httpdns/HttpDnsClient$RequestParamType;Lio/rong/imlib/httpdns/HttpDnsClient$AsyncHttpDnsCompletion;)V
:cond_bb
:goto_bb
return-void
.end method
.method public setPreResolveTag(Ljava/lang/String;)V
.registers 6
const/4 v0, 0x0
if-eqz p1, :cond_39
.line 1
invoke-virtual {p1}, Ljava/lang/String;->isEmpty()Z
move-result v1
if-eqz v1, :cond_a
goto :goto_39
.line 2
:cond_a
iget v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveNum:I
const/4 v2, 0x1
add-int/2addr v1, v2
iput v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveNum:I
.line 3
iget v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveNum:I
if-le v1, v2, :cond_1b
.line 4
new-array v1, v0, [Ljava/lang/Object;
const-string v3, "You have already set PreResolveHosts, it is best to set it only once."
invoke-static {v3, v1}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
.line 5
:cond_1b
new-array v1, v2, [Ljava/lang/Object;
aput-object p1, v1, v0
const-string v0, " Set preResolve tag : %s"
invoke-static {v0, v1}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
.line 6
new-instance v0, Lio/rong/imlib/httpdns/HttpDnsCompletion;
iget-object v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->context:Landroid/content/Context;
invoke-direct {v0, v1}, Lio/rong/imlib/httpdns/HttpDnsCompletion;-><init>(Landroid/content/Context;)V
.line 7
invoke-static {}, Ljava/lang/System;->currentTimeMillis()J
move-result-wide v1
iput-wide v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->preResolveStartTime:J
.line 8
iget-object v1, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
sget-object v2, Lio/rong/imlib/httpdns/HttpDnsClient$RequestParamType;->TAG_OF_HOSTS:Lio/rong/imlib/httpdns/HttpDnsClient$RequestParamType;
invoke-virtual {v1, p1, v2, v0}, Lio/rong/imlib/httpdns/HttpDnsClient;->asyncSendRequest(Ljava/lang/String;Lio/rong/imlib/httpdns/HttpDnsClient$RequestParamType;Lio/rong/imlib/httpdns/HttpDnsClient$AsyncHttpDnsCompletion;)V
return-void
.line 9
:cond_39
:goto_39
new-array p1, v0, [Ljava/lang/Object;
const-string v0, "Set pre resolve hosts error, get empty tag"
invoke-static {v0, p1}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
return-void
.end method
.method public setSecret(Ljava/lang/String;)V
.registers 5
.line 1
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result v0
const/16 v1, 0x40
if-gt v0, v1, :cond_12
const/16 v1, 0x8
if-lt v0, v1, :cond_12
.line 2
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
invoke-virtual {v0, p1}, Lio/rong/imlib/httpdns/HttpDnsClient;->setSecret(Ljava/lang/String;)V
return-void
.line 3
:cond_12
new-instance v0, Ljava/lang/IllegalArgumentException;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "secret length("
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/String;->length()I
move-result p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p1, ") check failed"
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-direct {v0, p1}, Ljava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public setServerIp(Ljava/lang/String;)V
.registers 3
.line 1
iget-object v0, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsClient:Lio/rong/imlib/httpdns/HttpDnsClient;
invoke-virtual {v0, p1}, Lio/rong/imlib/httpdns/HttpDnsClient;->setDefaultServerIp(Ljava/lang/String;)V
return-void
.end method
.method public syncResolve(Ljava/lang/String;)Lio/rong/imlib/httpdns/RongHttpDnsResult;
.registers 13
.line 1
invoke-static {p1}, Lio/rong/imlib/httpdns/RongHttpDnsUtil;->validateIpv4(Ljava/lang/String;)Z
move-result v0
const/4 v1, 0x0
if-eqz v0, :cond_19
.line 2
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 3
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 4
new-instance p1, Lio/rong/imlib/httpdns/RongHttpDnsResult;
sget-object v2, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;->RESOLVE_NONEED:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;
sget-object v3, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;->BDHttpDnsResolveOK:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;
invoke-direct {p1, v2, v3, v0, v1}, Lio/rong/imlib/httpdns/RongHttpDnsResult;-><init>(Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
return-object p1
.line 5
:cond_19
invoke-static {p1}, Lio/rong/imlib/httpdns/RongHttpDnsUtil;->validateIpv6(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_39
.line 6
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
const-string v2, "[\\[\\]]"
const-string v3, ""
.line 7
invoke-virtual {p1, v2, v3}, Ljava/lang/String;->replaceAll(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object p1
.line 8
invoke-virtual {v0, p1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 9
new-instance p1, Lio/rong/imlib/httpdns/RongHttpDnsResult;
sget-object v2, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;->RESOLVE_NONEED:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;
sget-object v3, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;->BDHttpDnsResolveOK:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;
invoke-direct {p1, v2, v3, v1, v0}, Lio/rong/imlib/httpdns/RongHttpDnsResult;-><init>(Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
return-object p1
.line 10
:cond_39
sget-object v0, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;->RESOLVE_NONE:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;
.line 11
iget-object v2, p0, Lio/rong/imlib/httpdns/RongHttpDns;->httpDnsCache:Lio/rong/imlib/httpdns/HostCacheManager;
invoke-virtual {v2, p1}, Lio/rong/imlib/httpdns/HostCacheManager;->getHostCacheEntry(Ljava/lang/String;)Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;
move-result-object v2
const/4 v3, 0x0
const/4 v4, 0x1
if-eqz v2, :cond_81
.line 12
invoke-virtual {v2}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->isExpired()Z
move-result v0
if-eqz v0, :cond_4e
.line 13
sget-object v0, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;->RESOLVE_FROM_HTTPDNS_EXPIRED_CACHE:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;
goto :goto_50
.line 14
:cond_4e
sget-object v0, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;->RESOLVE_FROM_HTTPDNS_CACHE:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;
:goto_50
move-object v6, v0
const/4 v0, 0x3
.line 15
new-array v0, v0, [Ljava/lang/Object;
aput-object p1, v0, v3
.line 16
invoke-virtual {v2}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->getIpv4List()Ljava/util/ArrayList;
move-result-object p1
invoke-virtual {p1}, Ljava/util/ArrayList;->toString()Ljava/lang/String;
move-result-object p1
aput-object p1, v0, v4
const/4 p1, 0x2
invoke-virtual {v6}, Ljava/lang/Enum;->toString()Ljava/lang/String;
move-result-object v1
aput-object v1, v0, p1
const-string p1, "Sync resolve successful, host(%s) ipv4List(%s) ipv6List(null) resolveType(%s)"
.line 17
invoke-static {p1, v0}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
.line 18
new-instance p1, Lio/rong/imlib/httpdns/RongHttpDnsResult;
sget-object v7, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;->BDHttpDnsResolveOK:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;
.line 19
invoke-virtual {v2}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->getIpv4List()Ljava/util/ArrayList;
move-result-object v8
invoke-virtual {v2}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->getIpv6List()Ljava/util/ArrayList;
move-result-object v9
invoke-virtual {v2}, Lio/rong/imlib/httpdns/HostCacheManager$HostEntry;->getClientIp()Ljava/lang/String;
move-result-object v10
move-object v5, p1
invoke-direct/range {v5 .. v10}, Lio/rong/imlib/httpdns/RongHttpDnsResult;-><init>(Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/String;)V
return-object p1
.line 20
:cond_81
new-array v2, v4, [Ljava/lang/Object;
aput-object p1, v2, v3
const-string p1, "Sync resolve failed, host(%s), find no httpdns cache entry"
invoke-static {p1, v2}, Lio/rong/imlib/httpdns/Logger;->printLog(Ljava/lang/String;[Ljava/lang/Object;)V
.line 21
new-instance p1, Lio/rong/imlib/httpdns/RongHttpDnsResult;
sget-object v2, Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;->BDHttpDnsResolveErrorCacheMiss:Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;
invoke-direct {p1, v0, v2, v1, v1}, Lio/rong/imlib/httpdns/RongHttpDnsResult;-><init>(Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveType;Lio/rong/imlib/httpdns/RongHttpDnsResult$ResolveStatus;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
return-object p1
.end method