HttpLoaderTask CreateDownloadTask() { HttpLoaderTask ret = null; if (mCachedLoadTask.Count > 0) { ret = mCachedLoadTask.Dequeue(); ret.enabled = true; } else { ret = mGameObject.AddComponent <HttpLoaderTask> (); } return(ret); }
public int DownLoad(string url, System.Action <byte[]> hdlOnSuccess, System.Action <string> hdlOnError, System.Action <ulong> hdlProcess = null) { Logger.LogInfo("DownLoad " + url); DownLoadInfo downloadInfo = CreateDownloadInfo(url, hdlOnSuccess, hdlOnError, hdlProcess); if (mCurDownLoadTaskList.Count > ConstConfig.MaxHttpTask) { mWaitTaskList.Add(downloadInfo); } else { HttpLoaderTask downloader = CreateDownloadTask(); mCurDownLoadTaskList.Add(downloader); downloader.BeginDownLoad(downloadInfo); } return(downloadInfo.taskId); }
public void Update() { for (int i = mCurDownLoadTaskList.Count - 1; i >= 0; --i) { HttpLoaderTask task = mCurDownLoadTaskList [i]; if (task.IsFinish) { if (null == task.Data) { Logger.LogError(task.Error); task.taskInfo.hdlOnError.Invoke(task.Error); } else { task.taskInfo.hdlOnSuccess.Invoke(task.Data); } ReturnDownloadInfo(task.taskInfo); task.Clear(); ReturnDownloadTask(task); mCurDownLoadTaskList.RemoveAt(i); } else { if (task.taskInfo.hdlProcess != null) { task.taskInfo.hdlProcess.Invoke(task.DownloadedBytes); } } } if (mCurDownLoadTaskList.Count <= ConstConfig.MaxHttpTask && mWaitTaskList.Count > 0) { HttpLoaderTask downloader = CreateDownloadTask(); downloader.BeginDownLoad(mWaitTaskList[0]); mCurDownLoadTaskList.Add(downloader); mWaitTaskList.RemoveAt(0); } }
void ReturnDownloadTask(HttpLoaderTask task) { task.enabled = false; mCachedLoadTask.Enqueue(task); }