public async Task <SanityCheckResult> Check(Type[] types, BootLog log)
        {
            var result = new SanityCheckResult();

            foreach (var type in types)
            {
                try
                {
                    var check = (ICheckSanity)serviceLocator.GetService(type);
                    var sane  = await check.Probe();

                    result.Add(type, sane);
                    if (sane)
                    {
                        log.Info(Constants.BootComponents.SanityChecks, $"{type.Name} passed.");
                    }
                    else
                    {
                        log.Error(Constants.BootComponents.SanityChecks, $"{type.Name} failed.");
                    }
                }
                catch (Exception)
                {
                    result.Add(type, false);
                    log.Error(Constants.BootComponents.SanityChecks, $"{type.Name} failed significantly.");
                }
            }

            return(result);
        }
Exemple #2
0
        private void SanityCheckCallback(SanityCheckResult result)
        {
            var notificationService = Container.Resolve <NotificationService>();

            if (result.UserMessages != null)
            {
                notificationService.QueueMessages(result.UserMessages);
            }
            InitializeShell();
        }
        private void CheckDatabaseCallback(bool databaseExisted, Action <SanityCheckResult> callback)
        {
            var result           = new SanityCheckResult();
            var frameworkMessage = CheckFrameworkVersion();

            if (frameworkMessage != null)
            {
                result.UserMessages = new List <NotifyUserMessageEventArgs> {
                    frameworkMessage
                }
            }
            ;
            WorkHandler.Run(RetryFailedUserReports);

            if (!databaseExisted)
            {
                result.DatabaseCreated = true;
                WorkHandler.Run(MigrateEsentToDatabase, cacheStore => MigrateEsentToDatabaseCallback(cacheStore, callback, result));
            }
            else
            {
                callback.Invoke(result);
            }
        }
 private void MigrateEsentToDatabaseCallback(EsentPersistentDictionary cacheStore, Action <SanityCheckResult> callback, SanityCheckResult result)
 {
     if (cacheStore != null && _windowManager.Confirm(Resx.Delete, Resx.DeleteEsentConfirmationMessage))
     {
         DeleteEsent(cacheStore);
     }
     callback.Invoke(result);
 }