public void OnStartClick() { CreateHttp3(); var list = new List <Http3Sharp.RequestParamaters> { new Http3Sharp.RequestParamaters { Path = Path, SaveFilePath = SaveFilePath, Headers = new Http3Sharp.Headers[4] { new Http3Sharp.Headers { Name = "hoge0", Value = "var0" }, new Http3Sharp.Headers { Name = "hoge1", Value = "var1" }, new Http3Sharp.Headers { Name = "hoge2", Value = "var2" }, new Http3Sharp.Headers { Name = "hoge3", Value = "var3" }, } } }; Http3.PublishRequest(list); StartButton.interactable = false; Body.text = string.Empty; }
public void OnDestroy() { if (null != Http3) { Http3.Destroy(); } }
public void OnAbortClick() { if (null != Http3) { Http3.Abort(); Clear(); } }
public void OnRetryClick() { if (null != Http3) { Http3.Retry(); _isRetry = true; Clear(); } }
public void OnStartClick() { CreateHttp3(MaxMultipleDownloadNum); // 1k-10M のデータを DownloadFileNum 個ダウンロードする TotalDownloadSize = 0; var list = new List <Http3Sharp.RequestParamaters>(); for (ulong num = 0; num < DownloadFileNum; ++num) { var fileSize = (ulong)new System.Random().Next(1, 1000) * 1024; TotalDownloadSize += fileSize; list.Add(new Http3Sharp.RequestParamaters { SaveFilePath = $"{WorkDir}\\{num}", Path = $"{fileSize}", }); } ; Http3.PublishRequest(list); StartButton.interactable = false; _completedDownloadFileNum = 0; }
protected List <Http3Sharp.ResponseParamaters> Http3Update() { var resList = new List <Http3Sharp.ResponseParamaters>(); if (null == Http3) { return(resList); } // リクエストを開始していない、終了した状態でも Update は呼び出してコネクションの状態を監視する必要がある. resList = Http3.Update(out Http3Sharp.Status status, out ulong progress, out ulong totalWriteSize); Http3Status = status; Http3Progress = progress; if (0 == TotalDownloadSize) { // このフレームにダウンロードした値 / 今までにダウンロードした値 Progress.text = $"{Http3Progress}/{totalWriteSize}"; } else { if (0 < totalWriteSize) { // 今までにダウンロードした値 / ダウンロード予定の値の合計値 Progress.text = $"{totalWriteSize}/{TotalDownloadSize}"; } } // ステータスの確認 Status.text = status.ToString(); // 通信完了状態か if ((Http3Sharp.Status.Wait == status) && (Http3Sharp.Status.Wait != _preStatus)) { _isRetry = false; } // エラー状態か if (Http3Sharp.Status.Wait > status) { var sb = new StringBuilder(); sb.AppendLine("ERROR!!"); sb.AppendLine($"{Http3.GetErrorDetail()}"); ErrorDetail.text = sb.ToString(); // エラー状態になったら Retry か Abort してあげる必要がある } else { ErrorDetail.text = string.Empty; } // スタート可能か → OK 且つリトライ、アボート中でないなら可能 ( Http3Sharp の仕様的にはいつでも詰めるがサンプルの仕様) StartButton.interactable = (Http3Sharp.Status.Wait == status); // リトライ可能か → エラー状態且つリトライ完了してないなら可能 RetryButton.interactable = ((Http3Sharp.Status.Wait > status) && !_isRetry); // アボート可能か → アボート中以外なら可能 AbortButton.interactable = (Http3Sharp.Status.Aborting != status); _preStatus = status; return(resList); }