Exemplo n.º 1
0
 public static void Reset(this IDownloadTask task)
 {
     task.CancellationHandle.Reset();
     task.ProgressPercentage = 0;
     task.CurrentState       = DownloadState.Created;
     task.ErrorCause         = null;
 }
Exemplo n.º 2
0
        protected void TryStartNextTask()
        {
            if (m_DownloadingTask != null)
            {
                WWWDownloader.S.Clear();
                return;
            }

            if (m_WaitDownloadList.Count == 0)
            {
                WWWDownloader.S.Clear();
                return;
            }

            IDownloadTask next = PopNextTask();

            if (next == null)
            {
                WWWDownloader.S.Clear();
                return;
            }

            //next.ResState = eResState.kDownloading;

            m_DownloadingTask = next;

            //HttpDownloaderMgr.S.AddDownloadTask(next.url, next.localResPath, OnDownloadProgress, OnDownloadError, OnDownloadFinish, null);
            WWWDownloader.S.AddDownloadTask(next.url, next.localResPath, next.fileSize, OnDownloadProgress, OnDownloadError, OnDownloadFinish, null, next.OnValidCheck, next.logError);

            next.DeleteOldResFile();
        }
Exemplo n.º 3
0
        public bool RemoveDownloadTask(IDownloadTask res)
        {
            if (res == null)
            {
                return(true);
            }

            //当前无法取消正在下载的资源

            /*
             * if (res.ResState == eResState.kDownloading)
             * {
             *  return false;
             * }
             */

            if (!mAllDownloadTaskMap.ContainsKey(res.LocalResPath))
            {
                return(true);
            }

            mAllDownloadTaskMap.Remove(res.LocalResPath);
            mWaitDownloadList.Remove(res);
            return(true);
        }
        public Guid Add(IDownloadTask downloadTask)
        {
            Guid guid = Guid.NewGuid();
            m_DownloadTasks.TryAdd(guid, downloadTask);

            return guid;
        }
Exemplo n.º 5
0
        protected void TryStartNextTask()
        {
            if (mDownloadingTask != null)
            {
                return;
            }

            if (mWaitDownloadList.Count == 0)
            {
                return;
            }

            IDownloadTask next = PopNextTask();

            if (next == null)
            {
                return;
            }

            //next.ResState = eResState.kDownloading;

            mDownloadingTask = next;

            HttpDownloaderMgr.Instance.AddDownloadTask(next.Url, next.LocalResPath, null, OnDownloadError, OnDownloadFinish, null);

            next.DeleteOldResFile();
        }
Exemplo n.º 6
0
        public Guid Add(IDownloadTask downloadTask)
        {
            Guid guid = Guid.NewGuid();

            m_DownloadTasks.TryAdd(guid, downloadTask);

            return(guid);
        }
Exemplo n.º 7
0
 private void RemoveTask(IDownloadTask res)
 {
     if (res == null)
     {
         return;
     }
     mAllDownloadTaskMap.Remove(res.LocalResPath);
 }
Exemplo n.º 8
0
        private IDownloadTask mDownloadingTask;//由于当前HttpDownloaderMgr只支持一个

        public bool HasDownloadTask(IDownloadTask res)
        {
            if (mAllDownloadTaskMap.ContainsKey(res.LocalResPath))
            {
                return(true);
            }
            return(false);
        }
        private Guid AddNewDownloadTask(IDownloadTask downloadTask, bool startImmediately)
        {
            Guid guid = m_DownloadTaskList.Add(downloadTask);

            if (startImmediately)
            {
                m_DownloadTaskQueue.EnqueueDownloadTask(downloadTask);
            }

            return guid;
        }
Exemplo n.º 10
0
        private Guid AddNewDownloadTask(IDownloadTask downloadTask, bool startImmediately)
        {
            Guid guid = m_DownloadTaskList.Add(downloadTask);

            if (startImmediately)
            {
                m_DownloadTaskQueue.EnqueueDownloadTask(downloadTask);
            }

            return(guid);
        }
        public DownloadTaskViewModel(IDownloadTask downloadTask, Action <string> viewResultsAction)
        {
            if (downloadTask == null)
            {
                throw new System.ArgumentNullException(nameof(downloadTask));
            }
            if (viewResultsAction == null)
            {
                throw new System.ArgumentNullException(nameof(viewResultsAction));
            }

            this.downloadTask      = downloadTask;
            this.viewResultsAction = viewResultsAction;
        }
        public void EnqueueDownloadTask(IDownloadTask downloadTask)
        {
            lock (m_Locker)
            {
                m_DownloadTasks.Enqueue(downloadTask);

                if (downloadTask != null)
                {
                    downloadTask.ChangeState(DownloadTaskState.Queued);
                }

                Monitor.Pulse(m_Locker);
            }
        }
Exemplo n.º 13
0
        public void EnqueueDownloadTask(IDownloadTask downloadTask)
        {
            lock (m_Locker)
            {
                m_DownloadTasks.Enqueue(downloadTask);

                if (downloadTask != null)
                {
                    downloadTask.ChangeState(DownloadTaskState.Queued);
                }

                Monitor.Pulse(m_Locker);
            }
        }
Exemplo n.º 14
0
        public void AddDownloadTask(IDownloadTask res)
        {
            if (res == null)
            {
                return;
            }

            //res.ResState = eResState.kWaitDownload;

            mAllDownloadTaskMap.Add(res.LocalResPath, res);
            mWaitDownloadList.Add(res);

            TryStartNextTask();
        }
Exemplo n.º 15
0
        private void OnDownloadError(string errorMsg)
        {
            if (mDownloadingTask == null)
            {
                TryStartNextTask();
                return;
            }

            Log.I("ResDownloader: Downloading Error:" + errorMsg);
            RemoveTask(mDownloadingTask);
            mDownloadingTask.OnDownLoadResult(false);
            mDownloadingTask = null;

            TryStartNextTask();
        }
        private void DrawDownloadTask(IDownloadTask downloadTask)
        {
            if (!downloadTask.Info.HasValue)
            {
                return;
            }

            EditorGUI.indentLevel++;
            var downloadTaskInfo = downloadTask.Info.Value;

            EditorGUILayout.BeginVertical();
            {
                var sb = StringBuilderCache.Acquire();
                sb.AppendLine("URL: " + downloadTaskInfo.UrlStr);
                sb.AppendLine("Save Path: " + downloadTaskInfo.SavePath);
                if (downloadTaskInfo.Size > 0L)
                {
                    sb.AppendFormat("Size: {0:N0}\n", downloadTaskInfo.Size);
                }

                if (downloadTaskInfo.Crc32 != null)
                {
                    sb.AppendFormat("CRC 32: {0}\n", downloadTaskInfo.Crc32.Value);
                }

                if (downloadTaskInfo.Size <= 0L)
                {
                    sb.AppendFormat("Download size: {0:N0}\n", downloadTask.DownloadedSize);
                }
                else
                {
                    float progress = (float)downloadTask.DownloadedSize / downloadTaskInfo.Size;
                    sb.AppendFormat("Download size: {0:N0} ({1:P2})\n",
                                    downloadTask.DownloadedSize, progress);
                }

                TimeSpan timeUsed = TimeSpan.FromSeconds(downloadTask.TimeUsed);
                sb.AppendFormat("Time used: {0}.{1:D2}:{2:D2}:{3:D2}\n", timeUsed.Days, timeUsed.Hours, timeUsed.Minutes, timeUsed.Seconds);
                EditorGUILayout.LabelField(StringBuilderCache.GetStringAndRelease(sb), EditorStyles.wordWrappedLabel);
            }
            EditorGUILayout.EndVertical();
            EditorGUI.indentLevel--;
        }
        private void DrawOngoingDownloadTask(int taskId, IDownloadTask downloadTask)
        {
            if (downloadTask.Info == null)
            {
                return;
            }

            var downloadTaskInfo = downloadTask.Info.Value;

            if (!DrawOneDownloadTaskHead(taskId, ref downloadTaskInfo))
            {
                return;
            }

            EditorGUILayout.BeginHorizontal();
            {
                GUILayout.Space(10f);
                DrawDownloadTask(downloadTask);
            }
            EditorGUILayout.EndHorizontal();
        }
Exemplo n.º 18
0
        public void RemooveTask()
        {
            //remoove selected task
            if (selectedTask != null)
            {
                IDownloadTask temp = null;

                for (int i = 0; i < downloadTaskList.Count; i++)
                {
                    if (downloadTaskList[i].CurrentDownloadItem.ID.Equals(selectedTask.ID))
                    {
                        downloadTaskList[i].Stop();
                        temp = downloadTaskList[i];
                        break;
                    }
                }

                downloadTaskList.Remove(temp);

                GetDownloadTaskState.Invoke(DownloadList);
            }
        }
Exemplo n.º 19
0
        private void OnDownloadFinish(string fileName, int download, int totalFileLenght)
        {
            if (mDownloadingTask == null)
            {
                Log.E("ResDownloader: Error, Current Res Begin Download Is Null...");
                TryStartNextTask();
                return;
            }

            if (fileName != mDownloadingTask.LocalResPath)
            {
                Log.E("ResDownloader: Error, Not Current Res Begin Download...");
                mDownloadingTask = null;
                TryStartNextTask();
                return;
            }

            Log.I("ResDownloader: Downloading Success:" + fileName);
            RemoveTask(mDownloadingTask);

            mDownloadingTask.OnDownLoadResult(true);
            mDownloadingTask = null;
            TryStartNextTask();
        }
 public DownloadTaskFinishedEventMessage(IDownloadTask downloadTask, Stream downloadStream, RemoteFileInfo remoteFileInfo)
 {
     DownloadTask = downloadTask;
     RemoteFileInfo = remoteFileInfo;
     DownloadStream = downloadStream;
 }
Exemplo n.º 21
0
 public TaskPoolEventArgs(IDownloadTask chaneObject, ChangeType changeType)
 {
     this.ChangedObject = chaneObject;
     this.ChangeType    = changeType;
 }
 /// <summary>
 /// Release a download task to the pool.
 /// </summary>
 /// <param name="downloadTask">The download task.</param>
 public void Release(IDownloadTask downloadTask)
 {
     m_DownloadTaskRawPool.Release((DownloadTask)downloadTask);
 }
 public DownloadTaskFinishedEventMessage(IDownloadTask downloadTask, Stream downloadStream, RemoteFileInfo remoteFileInfo)
 {
     DownloadTask   = downloadTask;
     RemoteFileInfo = remoteFileInfo;
     DownloadStream = downloadStream;
 }