Beispiel #1
0
 /// <summary>
 /// Set the next delete on server step, if possible.
 /// </summary>
 public void SetDeleteOnServerStep(KwsDeleteOnServerStep step)
 {
     if (m_deleteOnServerStep >= step) return;
     m_deleteOnServerStep = step;
     RequestRun("set server delete step to " + step);
 }
Beispiel #2
0
        /// <summary>
        /// Request a switch to the task specified, if possible.
        /// </summary>
        public void RequestTaskSwitch(KwsTask task)
        {
            try
            {
                // Validate.
                if (m_taskSwitchFlag ||
                    task == KwsTask.Stop && !CanStop() ||
                    task == KwsTask.Spawn && !CanSpawn() ||
                    task == KwsTask.Rebuild && !CanRebuild() ||
                    task == KwsTask.WorkOffline && !CanWorkOffline() ||
                    task == KwsTask.WorkOnline && !CanWorkOnline() ||
                    task == KwsTask.Remove && !CanRemove() ||
                    task == KwsTask.DeleteOnServer && !CanDeleteOnServer())
                {
                    Logging.Log("Request to switch to task " + task + " ignored.");
                    return;
                }

                Logging.Log("Switching to task " + task + ".");

                // Update some state prior to the task switch.
                if (task == KwsTask.Rebuild)
                {
                    m_kws.MainStatus = KwsMainStatus.RebuildRequired;
                    m_rebuildStep = KwsRebuildTaskStep.None;
                }

                else if (task == KwsTask.WorkOnline)
                {
                    ResetKasFailureState();
                }

                else if (task == KwsTask.Remove)
                {
                    m_kws.MainStatus = KwsMainStatus.OnTheWayOut;
                    m_kws.AddToKwsRemoveTree();
                    m_kws.SetDirty();
                }

                else if (task == KwsTask.DeleteOnServer)
                {
                    ResetKasFailureState();
                    m_deleteOnServerStep = KwsDeleteOnServerStep.ConnectedAndLoggedOut;
                }

                if (task == KwsTask.Spawn ||
                    task == KwsTask.Rebuild ||
                    task == KwsTask.WorkOffline ||
                    task == KwsTask.WorkOnline)
                {
                    m_kws.AppException = null;
                }

                // Perform the task switch, if required.
                if (task != m_currentTask) SwitchTask(task);

                // Update some state after the task switch.
                if (task == KwsTask.Spawn)
                {
                    m_kws.NormalizeAppState();
                }
            }

            catch (Exception ex)
            {
                Base.HandleException(ex, true);
            }
        }