Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions library/src/androidTest/java/com/qiniu/android/AsynTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public void run() {
@Override
public void run() {

if (Thread.currentThread().getName().equals("main")){
if (Thread.currentThread() == Looper.getMainLooper().getThread()){
testParam.successCount += 1;
}

Expand Down Expand Up @@ -112,7 +112,7 @@ public void testAsyncBg(){
@Override
public void run() {
String threadName = Thread.currentThread().getName();
if (!threadName.equals("main")){
if (Thread.currentThread() != Looper.getMainLooper().getThread()){
synchronized (this){
testParam.successCount += 1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public class DnsCacheFileTest extends BaseTest {

public void testCreate(){
try {
DnsCacheFile file = new DnsCacheFile("");
DnsCacheFile file = new DnsCacheFile(null);
if (file != null){
assertTrue(false);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -221,10 +221,7 @@ private RequestTransaction createUploadRequestTransaction(String tokenString){
ArrayList<String> hosts = new ArrayList<>();
hosts.add(config.serverURL);

ArrayList<String> ioHosts = new ArrayList<>();
ioHosts.add(ZoneInfo.SDKDefaultIOHost);

transaction = new RequestTransaction(hosts, ioHosts, token);
transaction = new RequestTransaction(hosts, ZoneInfo.EmptyRegionId, token);
return transaction;
}

Expand Down
5 changes: 1 addition & 4 deletions library/src/main/java/com/qiniu/android/common/AutoZone.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,7 @@ public void complete(ResponseInfo responseInfo, UploadRegionRequestMetrics reque
private RequestTransaction createUploadRequestTransaction(UpToken token){
List<String> hosts = getUcServerList();

ArrayList<String> ioHosts = new ArrayList<>();
ioHosts.add(ZoneInfo.SDKDefaultIOHost);

RequestTransaction transaction = new RequestTransaction(hosts, ioHosts, token);
RequestTransaction transaction = new RequestTransaction(hosts, ZoneInfo.EmptyRegionId, token);
transactions.add(transaction);
return transaction;
}
Expand Down
32 changes: 15 additions & 17 deletions library/src/main/java/com/qiniu/android/common/FixedZone.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


/**
Expand All @@ -16,35 +17,35 @@ public final class FixedZone extends Zone {
*/
public static final Zone zone0 = new FixedZone(new String[]{"upload.qiniup.com", "up.qiniup.com"},
new String[]{"upload.qbox.me", "up.qbox.me"},
new String[]{"iovip.qbox.me"});
"z0");

/**
* 华北机房
*/
public static final Zone zone1 = new FixedZone(new String[]{"upload-z1.qiniup.com", "up-z1.qiniup.com"},
new String[]{"upload-z1.qbox.me", "up-z1.qbox.me"},
new String[]{"iovip-z1.qbox.me"});
"z1");

/**
* 华南机房
*/
public static final Zone zone2 = new FixedZone(new String[]{"upload-z2.qiniup.com", "up-z2.qiniup.com"},
new String[]{"upload-z2.qbox.me", "up-z2.qbox.me"},
new String[]{"iovip-z2.qbox.me"});
"z2");

/**
* 北美机房
*/
public static final Zone zoneNa0 = new FixedZone(new String[]{"upload-na0.qiniup.com", "up-na0.qiniup.com"},
new String[]{"upload-na0.qbox.me", "up-na0.qbox.me"},
new String[]{"iovip-na0.qbox.me"});
"na0");

/**
* 新加坡机房
*/
public static final Zone zoneAs0 = new FixedZone(new String[]{"upload-as0.qiniup.com", "up-as0.qiniup.com"},
new String[]{"upload-as0.qbox.me", "up-as0.qbox.me"},
new String[]{"iovip-as0.qbox.me"});
"as0");

private ZonesInfo zonesInfo;

Expand Down Expand Up @@ -81,37 +82,34 @@ public FixedZone(String[] upDomains) {
this(upDomains, null);
}

public FixedZone(String[] upDomains, String[] ioDomains) {
this(upDomains, null, ioDomains);
public FixedZone(String[] upDomains, String regionId) {
this(upDomains, null, regionId);
}

private FixedZone(String[] upDomains, String[] oldUpDomains, String[] ioDomains) {
this.zonesInfo = createZonesInfo(upDomains, oldUpDomains, ioDomains);
private FixedZone(String[] upDomains, String[] oldUpDomains, String regionId) {
this.zonesInfo = createZonesInfo(upDomains, oldUpDomains, regionId);
}

private ZonesInfo createZonesInfo(String[] upDomains,
String[] oldUpDomains,
String[] ioDomains) {
String regionId) {

if (upDomains == null || upDomains.length == 0) {
return null;
}

ArrayList<String> upDomainsList = new ArrayList<String>(Arrays.asList(upDomains));
ArrayList<String> oldUpDomainsList = null;
List<String> upDomainsList = new ArrayList<String>(Arrays.asList(upDomains));
List<String> oldUpDomainsList = null;
if (oldUpDomains != null){
oldUpDomainsList = new ArrayList<String>(Arrays.asList(oldUpDomains));
}
ArrayList<String> ioDomainsList = null;
if (ioDomains != null){
ioDomainsList = new ArrayList<String>(Arrays.asList(ioDomains));
}
ZoneInfo zoneInfo = ZoneInfo.buildInfo(upDomainsList, oldUpDomainsList, ioDomainsList);
ZoneInfo zoneInfo = ZoneInfo.buildInfo(upDomainsList, oldUpDomainsList, regionId);
if (zoneInfo == null) {
return null;
}
ArrayList<ZoneInfo> zoneInfoList = new ArrayList<ZoneInfo>();
zoneInfoList.add(zoneInfo);

return new ZonesInfo(zoneInfoList);
}

Expand Down
151 changes: 57 additions & 94 deletions library/src/main/java/com/qiniu/android/common/ZoneInfo.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,49 +22,39 @@ public class ZoneInfo {

private static int DOMAIN_FROZEN_SECONDS = 10 * 60;

private int ttl;
public UploadServerGroup acc;
public UploadServerGroup src;
public UploadServerGroup old_acc;
public UploadServerGroup old_src;

public String regionId;
public ArrayList<String> allHosts;
public final int ttl;
public final List<String> domains;
public final List<String> old_domains;

public final String regionId;
public List<String> allHosts;
public JSONObject detailInfo;

public static ZoneInfo buildInfo(List<String> mainHosts,
List<String> ioHosts){
return buildInfo(mainHosts, null, ioHosts);
String regionId){
return buildInfo(mainHosts, null, regionId);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

公开接口变更,应该有文档注明

}

public static ZoneInfo buildInfo(List<String> mainHosts,
List<String> oldHosts,
List<String> ioHosts){
String regionId){
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

公开接口变更,应该有文档注明

if (mainHosts == null){
return null;
}

HashMap<String, Object> up = new HashMap<>();

HashMap<String, Object> up_acc = new HashMap<>();
up_acc.put("main", mainHosts);
up.put("acc", up_acc);

up.put("domains", mainHosts);
if (oldHosts != null){
HashMap<String, Object> up_old_acc = new HashMap<>();
up_old_acc.put("main", oldHosts);
up.put("old_acc", up_old_acc);
up.put("old", oldHosts);
}

HashMap<String, Object> io_src = new HashMap<>();
HashMap<String, Object> io = new HashMap<>();
io_src.put("main", (ioHosts != null ? ioHosts : new ArrayList<String>()));
io.put("src", io_src);

if (regionId == null){
regionId = EmptyRegionId;
}
HashMap<String, Object> info = new HashMap<>();
info.put("ttl", 86400*1000);
info.put("region", regionId);
info.put("up", up);
info.put("io", io);

JSONObject object = new JSONObject(info);

Expand All @@ -76,16 +66,13 @@ public static ZoneInfo buildInfo(List<String> mainHosts,
}

private ZoneInfo(int ttl,
UploadServerGroup acc,
UploadServerGroup src,
UploadServerGroup old_acc,
UploadServerGroup old_src) {

String regionId,
List<String> domains,
List<String> old_domains) {
this.ttl = ttl;
this.acc = acc;
this.src = src;
this.old_acc = old_acc;
this.old_src = old_src;
this.regionId = regionId;
this.domains = domains;
this.old_domains = old_domains;
}

/**
Expand All @@ -99,73 +86,49 @@ public static ZoneInfo buildFromJson(JSONObject obj) throws JSONException {
return null;
}

int ttl = obj.getInt("ttl");
List<String> domainsList = new ArrayList<>();
ConcurrentHashMap<String, Long> domainsMap = new ConcurrentHashMap<>();
int ttl = obj.optInt("ttl");
String regionId = obj.optString("region");
if (regionId == null){
regionId = EmptyRegionId;
}

String io_host = "null";
try {
JSONObject io = obj.getJSONObject("io");
JSONObject io_src = io.getJSONObject("src");
JSONArray io_main = io_src.getJSONArray("main");
io_host = io_main.length() > 0 ? io_main.getString(0) : "null";
} catch (JSONException e){}

String zoneRegion = "unknown";
if (io_host.equals("iovip.qbox.me")){
zoneRegion = "z0";
} else if (io_host.equals("iovip-z1.qbox.me")){
zoneRegion = "z1";
} else if (io_host.equals("iovip-z2.qbox.me")){
zoneRegion = "z2";
} else if (io_host.equals("iovip-na0.qbox.me")){
zoneRegion = "na0";
} else if (io_host.equals("iovip-as0.qbox.me")){
zoneRegion = "as0";
} else if (io_host.equals(SDKDefaultIOHost)){
zoneRegion = EmptyRegionId;
JSONObject up = obj.optJSONObject("up");
if (up == null){
return null;
}

JSONObject up = obj.getJSONObject("up");
List<String> allHosts = new ArrayList<>();
List<String> domains = new ArrayList<>();
JSONArray domainsJson = up.optJSONArray("domains");
if (domainsJson != null && domainsJson.length() > 0){
for (int i=0; i< domainsJson.length(); i++) {
String domain = domainsJson.optString(i);
if (domain != null && domain.length() > 0){
domains.add(domain);
allHosts.add(domain);
}
}
}

JSONObject acc = null;
JSONObject src = null;
JSONObject old_acc = null;
JSONObject old_src = null;
try {
acc = up.getJSONObject("acc");;
} catch (JSONException e) {}
try {
src = up.getJSONObject("src");;
} catch (JSONException e) {}
try {
old_acc = up.getJSONObject("old_acc");;
} catch (JSONException e) {}
try {
old_src = up.getJSONObject("old_src");;
} catch (JSONException e) {}
List<String> old_domains = new ArrayList<>();
JSONArray old_domainsJson = up.optJSONArray("old");
if (old_domainsJson != null && old_domainsJson.length() > 0){
for (int i=0; i< old_domainsJson.length(); i++) {
String domain = old_domainsJson.optString(i);
if (domain != null && domain.length() > 0){
old_domains.add(domain);
allHosts.add(domain);
}
}
}

ZoneInfo zoneInfo = new ZoneInfo(ttl,
UploadServerGroup.buildInfoFromJson(acc),
UploadServerGroup.buildInfoFromJson(src),
UploadServerGroup.buildInfoFromJson(old_acc),
UploadServerGroup.buildInfoFromJson(old_src));
zoneInfo.regionId = zoneRegion;
if (domains.size() == 0 && old_domains.size() == 0){
return null;
}

ZoneInfo zoneInfo = new ZoneInfo(ttl, regionId, domains, old_domains);
zoneInfo.detailInfo = obj;

ArrayList<String> allHosts = new ArrayList<>();
if (zoneInfo.acc != null && zoneInfo.acc.allHosts != null){
allHosts.addAll(zoneInfo.acc.allHosts);
}
if (zoneInfo.src != null && zoneInfo.src.allHosts != null){
allHosts.addAll(zoneInfo.src.allHosts);
}
if (zoneInfo.old_acc != null && zoneInfo.old_acc.allHosts != null){
allHosts.addAll(zoneInfo.old_acc.allHosts);
}
if (zoneInfo.old_src != null && zoneInfo.old_src.allHosts != null){
allHosts.addAll(zoneInfo.old_src.allHosts);
}
zoneInfo.allHosts = allHosts;

return zoneInfo;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,20 @@ public class DnsCacheFile implements Recorder {
public File f;

public DnsCacheFile(String directory) throws IOException {
if (directory == null) {
throw new IOException("directory invalid");
}

this.directory = directory;
f = new File(directory);
if (!f.isDirectory() || !f.exists()) {

if (!f.exists()) {
boolean r = f.mkdirs();
if (!r) {
throw new IOException("mkdir failed");
}
return;
}

if (!f.isDirectory()) {
throw new IOException("does not mkdir");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,16 @@ public class DnsCacheInfo implements java.io.Serializable {
public String localIp;
public ConcurrentHashMap<String, List<IDnsNetworkAddress>> info;

public static DnsCacheInfo createDnsCacheInfoByJsonData(byte[] jsonData) {
public static DnsCacheInfo createDnsCacheInfoByData(byte[] jsonData) {
if (jsonData == null){
return null;
}
DnsCacheInfo dnsCacheInfo = (DnsCacheInfo)StringUtils.toObject(jsonData);
return dnsCacheInfo;
Object dnsCacheInfo = StringUtils.toObject(jsonData);
if (dnsCacheInfo instanceof DnsCacheInfo){
return (DnsCacheInfo)dnsCacheInfo;
} else {
return null;
}
}

public DnsCacheInfo() {
Expand Down
Loading