コード例 #1
0
        public void Test__Start()
        {
            bool finish = false;

            void Run()
            {
                while (!finish)
                {
                    continue;
                }
            }

            ITaskStatus status = BackgroundTask.Start(Run);

            Assert.True(status.IsRunning);
            Assert.False(status.IsFinished);
            Assert.False(status.IsExitedWithError);
            Assert.Null(status.Exception);

            finish = true;

            while (status.IsRunning)
            {
                continue;
            }

            Assert.False(status.IsRunning);
            Assert.True(status.IsFinished);
            Assert.False(status.IsExitedWithError);
            Assert.Null(status.Exception);
        }
コード例 #2
0
 public TaskController(IProject project, ITask task, ITaskStatus taskStatus, IAuthorizationService authService, ITaskMember taskMember, IProjectMember projectMember, IMember member)
 {
     _project       = project;
     _task          = task;
     _taskStatus    = taskStatus;
     _authService   = authService;
     _taskMember    = taskMember;
     _projectMember = projectMember;
     _member        = member;
 }
コード例 #3
0
 public void Abort()
 {
     if (!IsFinished())
     {
         status  = ITaskStatus.FAIL;
         doAbort = true;
         AbortInternal();
         statusMsg = "download aborted";
     }
 }
コード例 #4
0
 public void Abort()
 {
     if (!IsFinished())
     {
         status = ITaskStatus.FAIL;
         doAbort = true;
         AbortInternal();
         statusMsg = "download aborted";
     }
 }
コード例 #5
0
        public IEnumerator Run()
        {
            PostPatchLoader.Instance.databaseConfigs = null;

            // Wait for game database to be initialized for the 2nd time and wait for any plugins to initialize
            yield return(null);

            yield return(null);

            IEnumerable <ModListGenerator.ModAddedByAssembly> modsAddedByAssemblies = ModListGenerator.GetAdditionalModsFromStaticMethods(ModLogger.Instance);

            IEnumerable <IProtoUrlConfig> databaseConfigs = null;

            this.patchLoader = new MMPatchLoader(modsAddedByAssemblies, ModLogger.Instance, this.counter, this.timings);

            ITaskStatus patchingThreadStatus = BackgroundTask.Start(delegate
            {
                databaseConfigs = patchLoader.Run();
            });

            while (true)
            {
                yield return(null);

                Status = patchLoader.status;
                Errors = patchLoader.errors;

                if (!patchingThreadStatus.IsRunning)
                {
                    break;
                }
            }

            if (patchingThreadStatus.IsExitedWithError)
            {
                kspLogger.Exception("The patching thread threw an exception", patchingThreadStatus.Exception);
                FatalErrorHandler.HandleFatalError("The patching thread threw an exception");
                yield break;
            }

            if (databaseConfigs == null)
            {
                kspLogger.Error("The patcher returned a null collection of configs");
                FatalErrorHandler.HandleFatalError("The patcher returned a null collection of configs");
                yield break;
            }

            PostPatchLoader.Instance.databaseConfigs = databaseConfigs;
        }
コード例 #6
0
 public TaskController(IRetrieveTask retrieveTask,
                       ICreateTask createTask,
                       IUpdateTask updateTask,
                       IDeleteTask deleteTask,
                       IDeleteBulk deleteBulk,
                       IMoveTask moveTask,
                       ITaskStatus taskStatus)
 {
     _retrieveTask = retrieveTask;
     _createTask   = createTask;
     _updateTask   = updateTask;
     _deleteTask   = deleteTask;
     _deleteBulk   = deleteBulk;
     _moveTask     = moveTask;
     _taskStatus   = taskStatus;
 }
コード例 #7
0
 public void Start()
 {
     if (IsStarted())
         return;
     else
     {
         status = ITaskStatus.RUNNING;
         try
         {
             StartInternal();
         }
         catch (Exception ex)
         {
             status = ITaskStatus.FAIL;
             statusMsg = ex.ToString();
         }
     }
 }
コード例 #8
0
 public void Start()
 {
     if (IsStarted())
     {
         return;
     }
     else
     {
         status = ITaskStatus.RUNNING;
         try
         {
             StartInternal();
         }
         catch (Exception ex)
         {
             status    = ITaskStatus.FAIL;
             statusMsg = ex.ToString();
         }
     }
 }
コード例 #9
0
        public IEnumerator Run()
        {
            PostPatchLoader.Instance.databaseConfigs = null;

            if (!Directory.Exists(logsDirPath))
            {
                Directory.CreateDirectory(logsDirPath);
            }

            kspLogger.Info("Patching started on a new thread, all output will be directed to " + logPath);

            MessageQueue <ILogMessage> mmLogQueue = new MessageQueue <ILogMessage>();
            QueueLogRunner             logRunner  = new QueueLogRunner(mmLogQueue);
            ITaskStatus loggingThreadStatus       = BackgroundTask.Start(delegate
            {
                using StreamLogger streamLogger = new StreamLogger(new FileStream(logPath, FileMode.Create));
                streamLogger.Info("Log started at " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff"));
                logRunner.Run(streamLogger);
                streamLogger.Info("Done!");
            });
コード例 #10
0
        public IEnumerator Run()
        {
            PostPatchLoader.Instance.databaseConfigs = null;

            if (!Directory.Exists(logsDirPath))
            {
                Directory.CreateDirectory(logsDirPath);
            }

            kspLogger.Info("Patching started on a new thread, all output will be directed to " + logPath);

            MessageQueue <ILogMessage> mmLogQueue = new MessageQueue <ILogMessage>();
            QueueLogRunner             logRunner  = new QueueLogRunner(mmLogQueue);
            ITaskStatus loggingThreadStatus       = BackgroundTask.Start(delegate
            {
                using (StreamLogger streamLogger = new StreamLogger(new FileStream(logPath, FileMode.Create)))
                {
                    logRunner.Run(streamLogger);
                    streamLogger.Info("Done!");
                }
            });

            // Wait for game database to be initialized for the 2nd time and wait for any plugins to initialize
            yield return(null);

            yield return(null);

            IBasicLogger mmLogger = new QueueLogger(mmLogQueue);

            IEnumerable <ModListGenerator.ModAddedByAssembly> modsAddedByAssemblies = ModListGenerator.GetAdditionalModsFromStaticMethods(mmLogger);

            IEnumerable <IProtoUrlConfig> databaseConfigs = null;

            MMPatchLoader patchLoader = new MMPatchLoader(modsAddedByAssemblies, mmLogger);

            ITaskStatus patchingThreadStatus = BackgroundTask.Start(delegate
            {
                databaseConfigs = patchLoader.Run();
            });

            while (true)
            {
                yield return(null);

                if (!patchingThreadStatus.IsRunning)
                {
                    logRunner.RequestStop();
                }

                Status = patchLoader.status;
                Errors = patchLoader.errors;

                if (!patchingThreadStatus.IsRunning && !loggingThreadStatus.IsRunning)
                {
                    break;
                }
            }

            if (patchingThreadStatus.IsExitedWithError)
            {
                kspLogger.Exception("The patching thread threw an exception", patchingThreadStatus.Exception);
                FatalErrorHandler.HandleFatalError("The patching thread threw an exception");
            }

            if (loggingThreadStatus.IsExitedWithError)
            {
                kspLogger.Exception("The logging thread threw an exception", loggingThreadStatus.Exception);
                FatalErrorHandler.HandleFatalError("The logging thread threw an exception");
            }

            if (databaseConfigs == null)
            {
                kspLogger.Error("The patcher returned a null collection of configs");
                FatalErrorHandler.HandleFatalError("The patcher returned a null collection of configs");
                yield break;
            }

            PostPatchLoader.Instance.databaseConfigs = databaseConfigs;
        }
コード例 #11
0
 public TaskStatusWrapper(ITaskStatus inner)
 {
     this.inner = inner;
 }
コード例 #12
0
 public ChangeStatusEventArgs(ITask task, ITaskStatus status)
 {
     Task = task;
     NewStatus = status;
 }