protected virtual void OnLoadingError() { if (LoadingError != null) { LoadingError.Invoke(this, System.EventArgs.Empty); } }
protected virtual void OnLoadingError(Exception e) { ResetState(); _synchronizationContext.Send(state => { LoadingError?.Invoke(this, new ErrorEventArgs(e)); }, 0); }
bool Success(bool ok, LoadingError error) { if (!ok) { Error(errorCode.ToString(), error); } return(ok); }
void Error(string msg, LoadingError error) { this.mErrorCode = error; this.errorContent = msg; if (error != LoadingError.RemoteURLConfigLoadFailedOrEmpty) { if (errorHandler != null) { errorHandler(msg, error); } } }
public IEnumerator DoUpdataWithOutCheckResource() { while (state != UpdateState.Sucess) { switch (state) { case UpdateState.None: { if (Application.internetReachability == NetworkReachability.NotReachable) { mCheckNetReachedTimes++; if (mCheckNetReachedTimes > 3000) { if (netWaring != null) { netWaring.Invoke(); } } yield return(null); } else { SetState(UpdateState.WaitForNet); } } break; case UpdateState.WaitForNet: { if (Application.internetReachability != NetworkReachability.NotReachable) { SetState(UpdateState.Sucess); } else { yield return(null); } } break; } if (mErrorCode != LoadingError.Success) { Error(errorContent, errorCode); SetState(UpdateState.None); mErrorCode = LoadingError.Success; yield break; } } }
public override void OnLoadingError(ILevelInfo pLevel, string error) { LoadingError?.Invoke(new EventArgs <ILevelInfo, string>(pLevel, error)); }
private async Task LoadFolderAsync(string id = null) { // Cancel any previous operation _cancellationTokenSource?.Cancel(); _cancellationTokenSource = new CancellationTokenSource(); // Check if session is set if (AuthenticationService == null) { throw new InvalidOperationException($"No {nameof(AuthenticationService)} has been specified"); } // Keep a local copy of the token because the source can change while executing this function var token = _cancellationTokenSource.Token; // Add an option to the REST API in order to get thumbnails for each file // https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/driveitem_list_thumbnails var options = new[] { new QueryOption("$expand", "thumbnails"), }; // Create the graph request builder for the drive IDriveRequestBuilder driveRequest = AuthenticationService.GraphClient.Me.Drive; // If folder id is null, the request refers to the root folder IDriveItemRequestBuilder driveItemsRequest; if (id == null) { driveItemsRequest = driveRequest.Root; } else { driveItemsRequest = driveRequest.Items[id]; } // Raise the loading event FolderLoading?.Invoke(this, EventArgs.Empty); try { try { // Make a API request loading 50 items per time var page = await driveItemsRequest.Children.Request(options).Top(50).GetAsync(token); token.ThrowIfCancellationRequested(); // Load each page await LoadGridItemsAsync(page, token); token.ThrowIfCancellationRequested(); } finally { // Raise the loaded event FolderLoaded?.Invoke(this, EventArgs.Empty); } } catch (OperationCanceledException) { } catch (Exception ex) { // Raise the error event LoadingError?.Invoke(this, ex); } }
public IEnumerator DoUpdata() { while (state != UpdateState.Sucess) { switch (state) { case UpdateState.None: { if (Application.internetReachability == NetworkReachability.NotReachable) { mCheckNetReachedTimes++; if (mCheckNetReachedTimes > 3000) { if (netWaring != null) { netWaring.Invoke(); } } yield return(null); } else { SetState(UpdateState.WaitForNet); } } break; case UpdateState.WaitForNet: { if (Application.internetReachability != NetworkReachability.NotReachable) { SetState(UpdateState.GetLocalAddressConfig); } else { yield return(null); } } break; case UpdateState.CheckWifi: { if (Application.internetReachability != NetworkReachability.ReachableViaLocalAreaNetwork) { mCheckWifiReachedTimes++; if (mCheckWifiReachedTimes > 3000) { if (wifiWaring != null) { wifiWaring.Invoke(); } SetState(UpdateState.WaitForWifi); } yield return(null); } else { SetState(UpdateState.WaitForWifi); } } break; case UpdateState.WaitForWifi: { if (Application.internetReachability == NetworkReachability.ReachableViaLocalAreaNetwork || allowDownloadWithoutWifi) { SetState(UpdateState.DownloadIncrements); } else { yield return(null); } } break; case UpdateState.GetLocalAddressConfig: { DoNowStep stepLoadResourceAddr = new DoNowStep(); stepLoadResourceAddr.name = "加载本地配置"; stepLoadResourceAddr.onEnd = TryGetAddressConfig; stepLoadResourceAddr.exit = () => string.IsNullOrEmpty(mRemoteAddress); stepLoadResourceAddr.errorCode = LoadingError.ResourceLoginServerAddressConfigNotExist; yield return(DoNow(stepLoadResourceAddr)); SetState(UpdateState.ReadRemoteConfig); } break; case UpdateState.ReadRemoteConfig: { LoadOneStep stepGetRemoteConfig = new LoadOneStep(); stepGetRemoteConfig.name = "获取服务器配置文件"; stepGetRemoteConfig.getURL = () => mRemoteAddress; stepGetRemoteConfig.loadDelegate = TryGetRemoteURLConfig; stepGetRemoteConfig.exit = () => string.IsNullOrEmpty(mRemoteVersionFile); stepGetRemoteConfig.errorCode = LoadingError.RemoteURLConfigLoadFailedOrEmpty; yield return(DoOneStep(stepGetRemoteConfig)); if (mErrorCode == LoadingError.RemoteURLConfigLoadFailedOrEmpty) { Debug.LogWarning("Error URL Config!" + mRemoteVersionFile); SetState(UpdateState.ReadStreamingVersion); } else { SetState(UpdateState.ReadRemoteVersion); } } break; case UpdateState.ReadRemoteVersion: { LoadOneStep stepLoadRemoteVersion = new LoadOneStep(); stepLoadRemoteVersion.name = "加载服务器版本信息"; stepLoadRemoteVersion.getURL = () => mRemoteVersionFile; stepLoadRemoteVersion.loadDelegate = TryGetVersionFromRemote; stepLoadRemoteVersion.exit = () => mVersionRemote == null; stepLoadRemoteVersion.errorCode = LoadingError.RemoteVersionLoadFailedOrEmpty; yield return(DoOneStep(stepLoadRemoteVersion)); SetState(UpdateState.ReadRemoteIndex); } break; case UpdateState.ReadRemoteIndex: { LoadOneStep stepLoadRemoteIndex = new LoadOneStep(); stepLoadRemoteIndex.name = "加载远程索引信息"; stepLoadRemoteIndex.loadDelegate = TryGetRemoteIndex; stepLoadRemoteIndex.exit = () => false; stepLoadRemoteIndex.getURL = () => mRemoteIndexFileURL; stepLoadRemoteIndex.errorCode = LoadingError.RemoteIndexLoadFailedOrEmpty; yield return(DoOneStep(stepLoadRemoteIndex)); SetState(UpdateState.ReadStreamingVersion); } break; case UpdateState.ReadStreamingVersion: { LoadOneStep stepLoadStreamingVersion = new LoadOneStep(); stepLoadStreamingVersion.name = "加载Streaming版本信息"; stepLoadStreamingVersion.loadDelegate = TryGetVersionFromStreamingAsset; stepLoadStreamingVersion.exit = () => false; //stepLoadStreamingVersion.getURL = () => getStreamingVersionFile; yield return(DoOneStep(stepLoadStreamingVersion)); SetState(UpdateState.ReadStreaming); } break; case UpdateState.ReadStreaming: { LoadOneStep stepLoadStreamingIndex = new LoadOneStep(); stepLoadStreamingIndex.name = "加载Streaming索引信息"; stepLoadStreamingIndex.loadDelegate = TryGetStreamingIndex; stepLoadStreamingIndex.exit = () => false; stepLoadStreamingIndex.getURL = () => getStreamingIndexFile; yield return(DoOneStep(stepLoadStreamingIndex)); SetState(UpdateState.ReadSD); } break; case UpdateState.ReadSD: { DoNowStep stepLoadSDInfo = new DoNowStep(); stepLoadSDInfo.name = "加载SD版本信息"; stepLoadSDInfo.onEnd = TryGetInfoFromSD; stepLoadSDInfo.exit = () => false; yield return(DoNow(stepLoadSDInfo)); if (mVersionRemote.ProgramHigherThan(mVersionStreaming)) { SetState(UpdateState.DownloadPackage); } else { if (mVersionSD == null) { SetState(UpdateState.ExportToSD); } else if (mVersionRemote.HigherThan(mVersionSD)) { SetState(UpdateState.DownloadIncrements); //SetState(UpdateState.CheckWifi); } else if (mVersionStreaming.HigherThan(mVersionSD)) { SetState(UpdateState.ExportToSD); } else { SetState(UpdateState.Sucess); } } } break; case UpdateState.ExportToSD: { LoadBeatchStep stepExportToSD = new LoadBeatchStep(); stepExportToSD.name = "解压文件中,请不要关闭游戏,此过程不消耗流量"; stepExportToSD.exit = () => false; stepExportToSD.getURLs = GetStreamABURLs; stepExportToSD.onEnd = SaveStreamingInfoToSD; stepExportToSD.errorCode = LoadingError.SDSaveVersionOrIndexFailed; stepExportToSD.loadDelegate = SaveFileToSD; yield return(LoadBeatch(stepExportToSD)); SetState(UpdateState.ReadSD); } break; case UpdateState.DownloadIncrements: { LoadBeatchStep stepLoadIncrement = new LoadBeatchStep(); stepLoadIncrement.name = "更新中,请不要关闭游戏"; stepLoadIncrement.exit = () => false; stepLoadIncrement.getURLs = GetIncrementABUrls; stepLoadIncrement.onEnd = SaveRemoteInfoToSD; stepLoadIncrement.errorCode = LoadingError.SDSaveVersionOrIndexFailed; stepLoadIncrement.loadDelegate = SaveFileToSD; yield return(LoadBeatch(stepLoadIncrement)); SetState(UpdateState.Sucess); } break; case UpdateState.DownloadPackage: { mErrorCode = LoadingError.PackageError; } break; case UpdateState.Sucess: break; default: break; } if (mErrorCode != LoadingError.Success && mErrorCode != LoadingError.RemoteURLConfigLoadFailedOrEmpty) { Error(errorContent, errorCode); SetState(UpdateState.None); yield break; } } }