Beispiel #1
0
        /// <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);
        }
Beispiel #2
0
        /// <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);
        }
Beispiel #3
0
        /// <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());
        }
Beispiel #4
0
        /// <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);
        }