From ed309f942b9679968baf00a014364b0e877492da Mon Sep 17 00:00:00 2001 From: tongchenfei Date: Tue, 29 Dec 2020 11:19:33 +0800 Subject: [PATCH] opt http dns --- app/build.gradle | 4 ++- app/functions/httpdns.gradle | 4 +-- foudations/httpdns-mogo/build.gradle | 2 +- .../com/mogo/httpdns/mogo/MogoHttpDns.java | 36 ++++++++++++++----- .../base/websocket/WebSocketDnsManager.java | 1 + .../com/mogo/utils/network/OkHttpFactory.java | 4 +++ gradle.properties | 2 +- 7 files changed, 40 insertions(+), 13 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 87bfe5dff1..926263ddff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -484,6 +484,7 @@ dependencies { implementation rootProject.ext.dependencies.moduleextensions implementation rootProject.ext.dependencies.modulemap implementation rootProject.ext.dependencies.moduleSmallMap + implementation rootProject.ext.dependencies.httpdnsmogo } else { implementation project(':foudations:mogo-commons') implementation project(':foudations:mogo-base-websocket-sdk') @@ -501,6 +502,7 @@ dependencies { implementation project(':modules:mogo-module-extensions') implementation project(':modules:mogo-module-map') implementation project(':modules:mogo-module-smp') + implementation project(':foudations:httpdns-mogo') } apply from: "./functions/basedmap.gradle" @@ -513,7 +515,7 @@ dependencies { apply from: "./functions/crashreport.gradle" apply from: "./functions/widgets.gradle" apply from: "./functions/tts.gradle" - apply from: "./functions/httpdns.gradle" +// apply from: "./functions/httpdns.gradle" apply from: "./functions/backwidget.gradle" apply from: "./functions/mediaui.gradle" apply from: "./functions/bizguide.gradle" diff --git a/app/functions/httpdns.gradle b/app/functions/httpdns.gradle index 9edbf9b3f7..c8522af9bb 100644 --- a/app/functions/httpdns.gradle +++ b/app/functions/httpdns.gradle @@ -6,8 +6,8 @@ project.dependencies { demoImplementation rootProject.ext.dependencies.httpdnsnoop onlineImplementation rootProject.ext.dependencies.httpdnsmogo } else { - qaImplementation project(':foudations:httpdns-noop') - demoImplementation project(':foudations:httpdns-noop') + qaImplementation project(':foudations:httpdns-mogo') + demoImplementation project(':foudations:httpdns-mogo') onlineImplementation project(':foudations:httpdns-mogo') } } \ No newline at end of file diff --git a/foudations/httpdns-mogo/build.gradle b/foudations/httpdns-mogo/build.gradle index 6f3d9a6bf8..bb7349607c 100644 --- a/foudations/httpdns-mogo/build.gradle +++ b/foudations/httpdns-mogo/build.gradle @@ -32,7 +32,7 @@ dependencies { implementation fileTree(dir: "libs", include: ["*.jar"]) implementation rootProject.ext.dependencies.arouter annotationProcessor rootProject.ext.dependencies.aroutercompiler - implementation 'com.mogo.httpdns:httpdns-helper:1.0.7' + implementation 'com.mogo.httpdns:httpdns-helper:1.0.8' if (Boolean.valueOf(RELEASE)) { implementation rootProject.ext.dependencies.httpdnsbase diff --git a/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java b/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java index 47aa3a4410..f1396902f1 100644 --- a/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java +++ b/foudations/httpdns-mogo/src/main/java/com/mogo/httpdns/mogo/MogoHttpDns.java @@ -25,6 +25,7 @@ import com.mogo.utils.network.HttpDns; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -49,6 +50,12 @@ public class MogoHttpDns implements IMogoHttpDns, HttpDns, OnAddressChangedListe @Override public void getHttpDnsIp(String host, int type, boolean useCache, IHttpDnsCallback callback) { + Logger.d("MogoHttpDns", "host: " + host + " type: " + type); + Logger.d("MogoHttpDns","all host: "); + Map map = httpDnsHelper.getAllAddress(); + for (String key : map.keySet()) { + Logger.d("MogoHttpDns","key: "+key+" value: "+map.get(key)); + } if (useCache) { String address = httpDnsHelper.getHttpDnsCachedAddress(type, host); if (address != null) { @@ -61,17 +68,20 @@ public class MogoHttpDns implements IMogoHttpDns, HttpDns, OnAddressChangedListe } } - private final Map ttlCallbackMap = new ArrayMap<>(); + private final Map> ttlCallbackMap = new ArrayMap<>(); @Override public void addHttpDnsTtlCallback(String host, int type, IHttpDnsTtlCallback callback) { - ttlCallbackMap.put(type + "-" + host, callback); - + if (ttlCallbackMap.get(type + "-" + host) == null) { + ttlCallbackMap.put(type + "-" + host, new ArrayList()); + } + ttlCallbackMap.get(type + "-" + host).add(callback); } @Override public void removeHttpDnsTtlCallback(String host, int type) { - ttlCallbackMap.remove(type + "-" + host); + // 先不实现 +// ttlCallbackMap.remove(type + "-" + host); } @Override @@ -94,6 +104,15 @@ public class MogoHttpDns implements IMogoHttpDns, HttpDns, OnAddressChangedListe public List lookup(String hostname) throws UnknownHostException { String cacheIp = httpDnsHelper.getHttpDnsCachedAddress(HTTP_DNS_ADDRESS_TYPE_HTTP, hostname); if (cacheIp == null || TextUtils.isEmpty(cacheIp)) { + cacheIp = httpDnsHelper.getHttpDnsAddress(HttpDnsHelper.HTTP_DNS_TYPE_HTTP, hostname); + if(!TextUtils.isEmpty(cacheIp)){ + String[] info = cacheIp.split(":"); + if (info.length > 1) { + return Arrays.asList(InetAddress.getAllByName(info[0])); + } else { + return Arrays.asList(InetAddress.getAllByName(cacheIp)); + } + } return Collections.emptyList(); } String[] info = cacheIp.split(":"); @@ -108,10 +127,11 @@ public class MogoHttpDns implements IMogoHttpDns, HttpDns, OnAddressChangedListe public void onAddressChanged(@org.jetbrains.annotations.Nullable Map map) { if (map != null) { for (String key : map.keySet()) { - IHttpDnsTtlCallback callback = ttlCallbackMap.get(key); - Logger.d("MogoHttpDns", "onAddressChanged key: " + key); - if (callback != null) { - callback.onTtl(); + if (ttlCallbackMap.get(key) != null) { + Logger.d("MogoHttpDns", "onAddressChanged key: " + key); + for(IHttpDnsTtlCallback callback : ttlCallbackMap.get(key)){ + callback.onTtl(); + } }else{ Logger.d("MogoHttpDns", "callback is null: " + key); } diff --git a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java index a7f94f87b9..8a46cb0ba2 100644 --- a/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java +++ b/foudations/mogo-base-websocket-sdk/src/main/java/com/mogo/base/websocket/WebSocketDnsManager.java @@ -3,6 +3,7 @@ package com.mogo.base.websocket; import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.httpdns.HttpDnsConst; import com.mogo.httpdns.IMogoHttpDns; +import com.mogo.httpdns.MogoHttpDnsHandler; import com.mogo.utils.ThreadPoolService; import com.mogo.utils.logger.Logger; diff --git a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/OkHttpFactory.java b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/OkHttpFactory.java index b9e7162248..d7c18ac352 100644 --- a/foudations/mogo-utils/src/main/java/com/mogo/utils/network/OkHttpFactory.java +++ b/foudations/mogo-utils/src/main/java/com/mogo/utils/network/OkHttpFactory.java @@ -1,5 +1,7 @@ package com.mogo.utils.network; +import com.mogo.utils.logger.Logger; + import java.net.InetAddress; import java.util.List; import java.util.Set; @@ -54,8 +56,10 @@ public final class OkHttpFactory { builder.dns( hostname -> { List< InetAddress > addresses = httpDns.lookup( hostname ); if ( addresses != null && !addresses.isEmpty() ) { + Logger.d("OkHttpFactory","look up hostname: "+hostname+" address: "+addresses.get(0).getHostAddress()); return addresses; } + Logger.d("OkHttpFactory","hostname: "+hostname+" no address"); return Dns.SYSTEM.lookup( hostname ); } ); } diff --git a/gradle.properties b/gradle.properties index 47537e0156..e9e80bff90 100644 --- a/gradle.properties +++ b/gradle.properties @@ -134,7 +134,7 @@ MOGO_MODULES_SMALL_MAP=1.0.0 # httpdns HTTPDNS_TENCENT_VERSION = 2.0.12 HTTPDNS_MOGO_VERSION=2.0.12 -HTTPDNS_BASE_VERSION = 2.0.12 +HTTPDNS_BASE_VERSION = 2.0.13 HTTPDNS_NOOP_VERSION = 2.0.12 ######## 外部依赖引用