//------------------------------------------------------------ // 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; } } } }