package com.qiniu.android.common; import android.util.Log; import java.net.URI; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; /** * Created by long on 2016/9/29. */ public final class FixedZone extends Zone { /** * 华东机房 */ public static final Zone zone0 = new FixedZone(new String[]{ "upload.qiniup.com", "upload-nb.qiniup.com", "upload-xs.qiniup.com", "up.qiniup.com", "up-nb.qiniup.com", "up-xs.qiniup.com", "upload.qbox.me", "up.qbox.me" }); /** * 华北机房 */ public static final Zone zone1 = new FixedZone(new String[]{ "upload-z1.qiniup.com", "up-z1.qiniup.com", "upload-z1.qbox.me", "up-z1.qbox.me" }); /** * 华南机房 */ public static final Zone zone2 = new FixedZone(new String[]{ "upload-z2.qiniup.com", "upload-gz.qiniup.com", "upload-fs.qiniup.com", "up-z2.qiniup.com", "up-gz.qiniup.com", "up-fs.qiniup.com", "upload-z2.qbox.me", "up-z2.qbox.me" }); /** * 北美机房 */ public static final Zone zoneNa0 = new FixedZone(new String[]{ "upload-na0.qiniu.com", "up-na0.qiniup.com", "upload-na0.qbox.me", "up-na0.qbox.me" }); private ZoneInfo zoneInfo; public FixedZone(ZoneInfo zoneInfo) { this.zoneInfo = zoneInfo; } public FixedZone(String[] upDomains) { this.zoneInfo = createZoneInfo(upDomains); } public static ZoneInfo createZoneInfo(String[] upDomains) { List<String> upDomainsList = new ArrayList<String>(); Map<String, Long> upDomainsMap = new ConcurrentHashMap<String, Long>(); for (String domain : upDomains) { upDomainsList.add(domain); upDomainsMap.put(domain, 0L); } return new ZoneInfo(0, upDomainsList, upDomainsMap); } @Override public synchronized String upHost(String upToken, boolean useHttps, String frozenDomain) { String upHost = this.upHost(this.zoneInfo, useHttps, frozenDomain); for (Map.Entry<String, Long> entry : this.zoneInfo.upDomainsMap.entrySet()) { Log.d("Qiniu.FixedZone", entry.getKey() + ", " + entry.getValue()); } return upHost; } @Override public void preQuery(String token, QueryHandler complete) { complete.onSuccess(); } @Override public boolean preQuery(String token) { return true; } @Override public synchronized void frozenDomain(String upHostUrl) { if (upHostUrl != null) { URI uri = URI.create(upHostUrl); //frozen domain String frozenDomain = uri.getHost(); zoneInfo.frozenDomain(frozenDomain); } } }