mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-05-14 19:40:47 +00:00
feat #642
This commit is contained in:
@@ -96,6 +96,11 @@ namespace YooAsset
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public int DownloadMaxRequestPerFrame { private set; get; } = int.MaxValue;
|
public int DownloadMaxRequestPerFrame { private set; get; } = int.MaxValue;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 自定义参数:下载任务的看门狗机制监控时间
|
||||||
|
/// </summary>
|
||||||
|
public int DownloadWatchDogTime { private set; get; } = int.MaxValue;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 自定义参数:启用断点续传的最小尺寸
|
/// 自定义参数:启用断点续传的最小尺寸
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -252,6 +257,11 @@ namespace YooAsset
|
|||||||
int convertValue = Convert.ToInt32(value);
|
int convertValue = Convert.ToInt32(value);
|
||||||
DownloadMaxRequestPerFrame = Mathf.Clamp(convertValue, 1, int.MaxValue);
|
DownloadMaxRequestPerFrame = Mathf.Clamp(convertValue, 1, int.MaxValue);
|
||||||
}
|
}
|
||||||
|
else if (name == FileSystemParametersDefine.DOWNLOAD_WATCH_DOG_TIME)
|
||||||
|
{
|
||||||
|
int convertValue = Convert.ToInt32(value);
|
||||||
|
DownloadWatchDogTime = Mathf.Clamp(convertValue, 1, int.MaxValue);
|
||||||
|
}
|
||||||
else if (name == FileSystemParametersDefine.RESUME_DOWNLOAD_MINMUM_SIZE)
|
else if (name == FileSystemParametersDefine.RESUME_DOWNLOAD_MINMUM_SIZE)
|
||||||
{
|
{
|
||||||
ResumeDownloadMinimumSize = Convert.ToInt64(value);
|
ResumeDownloadMinimumSize = Convert.ToInt64(value);
|
||||||
|
|||||||
@@ -17,6 +17,11 @@ namespace YooAsset
|
|||||||
protected readonly PackageBundle _bundle;
|
protected readonly PackageBundle _bundle;
|
||||||
protected readonly string _tempFilePath;
|
protected readonly string _tempFilePath;
|
||||||
|
|
||||||
|
private bool _watchDogInit = false;
|
||||||
|
private bool _watchDogAborted = false;
|
||||||
|
private ulong _lastDownloadBytes;
|
||||||
|
private double _lastGetDataTime;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 引用计数
|
/// 引用计数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -33,6 +38,41 @@ namespace YooAsset
|
|||||||
return $"RefCount : {RefCount}";
|
return $"RefCount : {RefCount}";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新看门狗监测
|
||||||
|
/// 说明:监控时间范围内,如果没有接收到任何下载数据,那么直接终止任务!
|
||||||
|
/// </summary>
|
||||||
|
protected void UpdateWatchDog()
|
||||||
|
{
|
||||||
|
if (_fileSystem.DownloadWatchDogTime == int.MaxValue)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_watchDogAborted)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_watchDogInit == false)
|
||||||
|
{
|
||||||
|
_watchDogInit = true;
|
||||||
|
_lastDownloadBytes = 0;
|
||||||
|
_lastGetDataTime = UnityEngine.Time.realtimeSinceStartupAsDouble;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_webRequest.downloadedBytes != _lastDownloadBytes)
|
||||||
|
{
|
||||||
|
_lastDownloadBytes = _webRequest.downloadedBytes;
|
||||||
|
_lastGetDataTime = UnityEngine.Time.realtimeSinceStartupAsDouble;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double deltaTime = UnityEngine.Time.realtimeSinceStartupAsDouble - _lastGetDataTime;
|
||||||
|
if (deltaTime > _fileSystem.DownloadWatchDogTime)
|
||||||
|
{
|
||||||
|
_watchDogAborted = true;
|
||||||
|
InternalAbort(); //终止网络请求
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 减少引用计数
|
/// 减少引用计数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ using UnityEngine.Networking;
|
|||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class UnityDownloadLocalFileOperation : UnityDownloadFileOperation
|
internal sealed class UnityDownloadLocalFileOperation : UnityDownloadFileOperation
|
||||||
{
|
{
|
||||||
private VerifyTempFileOperation _verifyOperation;
|
private VerifyTempFileOperation _verifyOperation;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
@@ -42,6 +42,8 @@ namespace YooAsset
|
|||||||
DownloadProgress = _webRequest.downloadProgress;
|
DownloadProgress = _webRequest.downloadProgress;
|
||||||
DownloadedBytes = (long)_webRequest.downloadedBytes;
|
DownloadedBytes = (long)_webRequest.downloadedBytes;
|
||||||
Progress = DownloadProgress;
|
Progress = DownloadProgress;
|
||||||
|
|
||||||
|
UpdateWatchDog();
|
||||||
if (_webRequest.isDone == false)
|
if (_webRequest.isDone == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ namespace YooAsset
|
|||||||
DownloadProgress = _webRequest.downloadProgress;
|
DownloadProgress = _webRequest.downloadProgress;
|
||||||
DownloadedBytes = (long)_webRequest.downloadedBytes;
|
DownloadedBytes = (long)_webRequest.downloadedBytes;
|
||||||
Progress = DownloadProgress;
|
Progress = DownloadProgress;
|
||||||
|
|
||||||
|
UpdateWatchDog();
|
||||||
if (_webRequest.isDone == false)
|
if (_webRequest.isDone == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,8 @@ namespace YooAsset
|
|||||||
DownloadProgress = _webRequest.downloadProgress;
|
DownloadProgress = _webRequest.downloadProgress;
|
||||||
DownloadedBytes = _fileOriginLength + (long)_webRequest.downloadedBytes;
|
DownloadedBytes = _fileOriginLength + (long)_webRequest.downloadedBytes;
|
||||||
Progress = DownloadProgress;
|
Progress = DownloadProgress;
|
||||||
|
|
||||||
|
UpdateWatchDog();
|
||||||
if (_webRequest.isDone == false)
|
if (_webRequest.isDone == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ namespace YooAsset
|
|||||||
public const string DISABLE_ONDEMAND_DOWNLOAD = "DISABLE_ONDEMAND_DOWNLOAD";
|
public const string DISABLE_ONDEMAND_DOWNLOAD = "DISABLE_ONDEMAND_DOWNLOAD";
|
||||||
public const string DOWNLOAD_MAX_CONCURRENCY = "DOWNLOAD_MAX_CONCURRENCY";
|
public const string DOWNLOAD_MAX_CONCURRENCY = "DOWNLOAD_MAX_CONCURRENCY";
|
||||||
public const string DOWNLOAD_MAX_REQUEST_PER_FRAME = "DOWNLOAD_MAX_REQUEST_PER_FRAME";
|
public const string DOWNLOAD_MAX_REQUEST_PER_FRAME = "DOWNLOAD_MAX_REQUEST_PER_FRAME";
|
||||||
|
public const string DOWNLOAD_WATCH_DOG_TIME = "DOWNLOAD_WATCH_DOG_TIME";
|
||||||
public const string RESUME_DOWNLOAD_MINMUM_SIZE = "RESUME_DOWNLOAD_MINMUM_SIZE";
|
public const string RESUME_DOWNLOAD_MINMUM_SIZE = "RESUME_DOWNLOAD_MINMUM_SIZE";
|
||||||
public const string RESUME_DOWNLOAD_RESPONSE_CODES = "RESUME_DOWNLOAD_RESPONSE_CODES";
|
public const string RESUME_DOWNLOAD_RESPONSE_CODES = "RESUME_DOWNLOAD_RESPONSE_CODES";
|
||||||
public const string VIRTUAL_WEBGL_MODE = "VIRTUAL_WEBGL_MODE";
|
public const string VIRTUAL_WEBGL_MODE = "VIRTUAL_WEBGL_MODE";
|
||||||
|
|||||||
Reference in New Issue
Block a user