//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 loyalsoft. All rights reserved.
// Homepage: http://www.game7000.com/
// Feedback: http://www.game7000.com/
//------------------------------------------------------------
namespace GameFramework.Download
{
internal sealed partial class DownloadManager : GameFrameworkModule, IDownloadManager
{
///
/// 下载任务。
///
private sealed class DownloadTask : TaskBase
{
private static int s_Serial = 0;
private DownloadTaskStatus m_Status;
private string m_DownloadPath;
private string m_DownloadUri;
private int m_FlushSize;
private float m_Timeout;
///
/// 初始化下载任务的新实例。
///
public DownloadTask()
{
m_Status = DownloadTaskStatus.Todo;
m_DownloadPath = null;
m_DownloadUri = null;
m_FlushSize = 0;
m_Timeout = 0f;
}
///
/// 获取或设置下载任务的状态。
///
public DownloadTaskStatus Status
{
get
{
return m_Status;
}
set
{
m_Status = value;
}
}
///
/// 获取下载后存放路径。
///
public string DownloadPath
{
get
{
return m_DownloadPath;
}
}
///
/// 获取原始下载地址。
///
public string DownloadUri
{
get
{
return m_DownloadUri;
}
}
///
/// 获取将缓冲区写入磁盘的临界大小。
///
public int FlushSize
{
get
{
return m_FlushSize;
}
}
///
/// 获取下载超时时长,以秒为单位。
///
public float Timeout
{
get
{
return m_Timeout;
}
}
///
/// 获取下载任务的描述。
///
public override string Description
{
get
{
return m_DownloadPath;
}
}
///
/// 创建下载任务。
///
/// 下载后存放路径。
/// 原始下载地址。
/// 下载任务的标签。
/// 下载任务的优先级。
/// 将缓冲区写入磁盘的临界大小。
/// 下载超时时长,以秒为单位。
/// 用户自定义数据。
/// 创建的下载任务。
public static DownloadTask Create(string downloadPath, string downloadUri, string tag, int priority, int flushSize, float timeout, object userData)
{
DownloadTask downloadTask = ReferencePool.Acquire();
downloadTask.Initialize(++s_Serial, tag, priority, userData);
downloadTask.m_DownloadPath = downloadPath;
downloadTask.m_DownloadUri = downloadUri;
downloadTask.m_FlushSize = flushSize;
downloadTask.m_Timeout = timeout;
return downloadTask;
}
///
/// 清理下载任务。
///
public override void Clear()
{
base.Clear();
m_Status = DownloadTaskStatus.Todo;
m_DownloadPath = null;
m_DownloadUri = null;
m_FlushSize = 0;
m_Timeout = 0f;
}
}
}
}