/// <summary> /// 创建上传者. /// </summary> /// <param name="iTarget">上传目标.</param> /// <param name="iOnStart">开始上传委托.</param> /// <param name="iOnFailed">上传失败委托.</param> /// <param name="iOnSuccessed">上传成功委托.</param> /// <param name="iUploadWay">上传方式.</param> public static Uploader Create( UploadItem iTarget, OnStart iOnStart, OnFailed iOnFailed, OnSuccessed iOnSuccessed, TUploadWay iUploadWay = TUploadWay.Ftp) { Uploader objRet = new Uploader(); objRet.Init(iTarget, iOnStart, iOnFailed, iOnSuccessed, iUploadWay); return(objRet); }
/// <summary> /// 上传. /// </summary> private IEnumerator UploadFiles(TUploadWay iUploadWay = TUploadWay.Default) { UploadServerInfo server = ServersConf.GetInstance().GetUploadServerInfo(); if (server == null) { yield return(null); } while (this.UploadQueue.Count > 0) { if (this.UploaderCount >= this.UploaderMaxCount) { yield return(new WaitForSeconds(1.0f)); } // 上传出错则停止 if (TRunState.OK != this._State) { UtilsLog.Error("UploadFiles", "Failed!!! State:{0} Detail:{1}", this._State.ToString(), this._errors.ToString()); // 取消现有上传线程 isCanceled = true; break; } Uploader uploader = this.UploadQueue.Dequeue(); if (uploader == null) { continue; } yield return(uploader.UploadFile()); yield return(new WaitForEndOfFrame()); // 上传出错则停止 if (TRunState.OK != this._State) { UtilsLog.Error("UploadFiles", "Failed!!! State:{0} Detail:{1}", this._State.ToString(), this._errors.ToString()); // 取消现有上传线程 isCanceled = true; break; } } yield return(null); }
/// <summary> /// 开始上传. /// </summary> /// <param name="iUploadWay">上传方式.</param> public void StartUpload(TUploadWay iUploadWay = TUploadWay.Default) { this._uploadWay = iUploadWay; this.isStarted = true; isCanceled = false; // 开始下载初始化状态:OK this._State = TRunState.OK; if (this._uploadBar != null) { this._uploadBar.Init(); } ServersConf.GetInstance().ClearCreatedDir(); // 检测上传 StartCoroutine(UploadCheck()); }
/// <summary> /// 初始化. /// </summary> /// <param name="iTarget">上传目标.</param> /// <param name="iOnStart">开始上传委托.</param> /// <param name="iOnFailed">上传失败委托.</param> /// <param name="iOnSuccessed">上传成功委托.</param> /// <param name="iUploadWay">上传方式.</param> private void Init( UploadItem iTarget, OnStart iOnStart, OnFailed iOnFailed, OnSuccessed iOnSuccessed, TUploadWay iUploadWay = TUploadWay.Ftp) { this._target = iTarget; this._onStart = iOnStart; this._onFailed = iOnFailed; this._onSuccessed = iOnSuccessed; this._uploadWay = iUploadWay; this.Retries = ServersConf.GetInstance().NetRetries; if (this._server == null) { this._server = ServersConf.GetInstance().UploadServer; } this.UploadBaseUrl = ServersConf.GetBundleUploadBaseURL(this._server, this._target); this.FileName = UploadList.GetLocalBundleFileName(this._target.ID, this._target.FileType); }