feat: 游戏下载host上报 https://jira.shanqu.cc/browse/GHZSCY-5476
This commit is contained in:
@ -10,8 +10,8 @@ import com.gh.gamecenter.common.exposure.meta.MetaUtil
|
||||
import com.gh.gamecenter.common.exposure.meta.MetaUtil.getMeta
|
||||
import com.gh.gamecenter.common.loghub.LoghubUtils
|
||||
import com.gh.gamecenter.common.utils.*
|
||||
import com.gh.gamecenter.core.utils.SentryHelper
|
||||
import com.gh.ndownload.NDataChanger
|
||||
import com.gh.ndownload.NDownloadBridge
|
||||
import com.halo.assistant.HaloApp
|
||||
import com.lightgame.download.DownloadConfig
|
||||
import com.lightgame.download.DownloadEntity
|
||||
@ -124,6 +124,7 @@ object DownloadDataHelper {
|
||||
val payloadObject = JSONObject()
|
||||
payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown")
|
||||
payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown")
|
||||
payloadObject.put("redirected_host_list", downloadEntity.meta[NDownloadBridge.REDIRECTED_HOST_LIST] ?: "unknown")
|
||||
payloadObject.put("game_id", downloadEntity.gameId)
|
||||
payloadObject.put("gameName", downloadEntity.name)
|
||||
payloadObject.put("platform", downloadEntity.platform)
|
||||
@ -212,6 +213,7 @@ object DownloadDataHelper {
|
||||
|
||||
payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown")
|
||||
payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown")
|
||||
payloadObject.put("redirected_host_list", downloadEntity.meta[NDownloadBridge.REDIRECTED_HOST_LIST] ?: "unknown")
|
||||
payloadObject.put("game_id", downloadEntity.gameId)
|
||||
payloadObject.put("gameName", downloadEntity.name)
|
||||
payloadObject.put("platform", downloadEntity.platform)
|
||||
@ -251,6 +253,7 @@ object DownloadDataHelper {
|
||||
|
||||
payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown")
|
||||
payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown")
|
||||
payloadObject.put("redirected_host_list", downloadEntity.meta[NDownloadBridge.REDIRECTED_HOST_LIST] ?: "unknown")
|
||||
payloadObject.put("game_id", downloadEntity.gameId)
|
||||
payloadObject.put("gameName", downloadEntity.name)
|
||||
payloadObject.put("platform", downloadEntity.platform)
|
||||
@ -315,6 +318,7 @@ object DownloadDataHelper {
|
||||
|
||||
payloadObject.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown")
|
||||
payloadObject.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown")
|
||||
payloadObject.put("redirected_host_list", downloadEntity.meta[NDownloadBridge.REDIRECTED_HOST_LIST] ?: "unknown")
|
||||
payloadObject.put("game_id", downloadEntity.gameId)
|
||||
payloadObject.put("gameName", downloadEntity.name)
|
||||
payloadObject.put("platform", downloadEntity.platform)
|
||||
@ -357,6 +361,7 @@ object DownloadDataHelper {
|
||||
sheet = JSONObject()
|
||||
sheet.put("host", downloadEntity.meta[DownloadEntity.DOWNLOAD_HOST_KEY] ?: "unknown")
|
||||
sheet.put("path", downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown")
|
||||
sheet.put("redirected_host_list", downloadEntity.meta[NDownloadBridge.REDIRECTED_HOST_LIST] ?: "unknown")
|
||||
sheet.put("game_id", downloadEntity.gameId)
|
||||
sheet.put("platform", downloadEntity.platform)
|
||||
sheet.put("package", downloadEntity.packageName)
|
||||
@ -376,6 +381,7 @@ object DownloadDataHelper {
|
||||
"path",
|
||||
downloadEntity.meta[DownloadEntity.DOWNLOAD_PATH_KEY] ?: "unknown"
|
||||
) // 初始化记录的 path 为空
|
||||
sheet.put("redirected_host_list", downloadEntity.meta[NDownloadBridge.REDIRECTED_HOST_LIST] ?: "unknown")
|
||||
sheet.put("total_size", downloadEntity.size / 1024 / 1024) // 初始化记录的 total_size 有可能为0
|
||||
sheet.put("progress_size", downloadEntity.progress / 1024 - progressSize)
|
||||
sheet.put("current_progress_size", downloadEntity.progress / 1024)
|
||||
|
||||
@ -43,6 +43,8 @@ object NDownloadBridge : InnerDownloadListener, IErrorRetryHandler {
|
||||
private const val DEFAULT_DOWNLOAD_THREAD_SIZE = 2
|
||||
private const val NO_NETWORK_MAX_RETRY_COUNT = 5
|
||||
|
||||
const val REDIRECTED_HOST_LIST = "redirected_host_list" // 重定向后的 url 数组
|
||||
|
||||
private var mRetryTimer: Timer? = null // 用于错误重试的 timer
|
||||
private val mRetryCountMap: ConcurrentHashMap<String, Int> by lazy { ConcurrentHashMap() }
|
||||
|
||||
@ -310,7 +312,6 @@ object NDownloadBridge : InnerDownloadListener, IErrorRetryHandler {
|
||||
if (!TextUtils.isEmpty(downloadEntity.eTag)) {
|
||||
val eTag: String = getRealETag(connection?.getHeaderField("Halo-ETag") ?: "")
|
||||
downloadEntity.haloEtag = eTag
|
||||
DownloadDao.getInstance(HaloApp.getInstance()).update(downloadEntity, false)
|
||||
}
|
||||
|
||||
// 记录重定向时获取到的最终格式,因为缓存问题,原格式与实际下载的格式有区别
|
||||
@ -319,9 +320,18 @@ object NDownloadBridge : InnerDownloadListener, IErrorRetryHandler {
|
||||
Utils.log(TAG, "获取到新的文件格式, $realFormat")
|
||||
|
||||
downloadEntity.addMetaExtra(REAL_FORMAT, realFormat)
|
||||
DownloadDao.getInstance(HaloApp.getInstance()).update(downloadEntity, false)
|
||||
}
|
||||
|
||||
// 记录重定向过程中所有的 host
|
||||
val redirectedHostArray = downloadEntity.getMetaExtra(REDIRECTED_HOST_LIST).toObject<ArrayList<String>>() ?: arrayListOf()
|
||||
connection?.getHeaderField("Location")?.let {
|
||||
val url = URL(it)
|
||||
redirectedHostArray.add(url.host)
|
||||
}
|
||||
downloadEntity.addMetaExtra(REDIRECTED_HOST_LIST, redirectedHostArray.toJson())
|
||||
|
||||
DownloadDao.getInstance(HaloApp.getInstance()).update(downloadEntity, false)
|
||||
|
||||
NDataChanger.notifyDataChanged(downloadEntity)
|
||||
}
|
||||
}
|
||||
|
||||
Submodule ndownload updated: b61908863c...bf5c887036
Reference in New Issue
Block a user