예제 #1
0
 private void EnterStateError()
 {
     Logger.Info("{0}", (object)MethodBase.GetCurrentMethod().Name);
     this.SerialQueueCheck();
     StateMachine.BooleanCallback mStartCallback = this.mStartCallback;
     if (mStartCallback != null)
     {
         mStartCallback(false);
     }
     this.mState = StateMachine.State.Error;
     this.mTerminationEvent.Set();
 }
예제 #2
0
        public void Start(StateMachine.BooleanCallback startCallback)
        {
            Logger.Info("{0}", (object)MethodBase.GetCurrentMethod().Name);
            Exception exc = (Exception)null;

            this.mWorkQueue.DispatchSync((SerialWorkQueue.Work)(() =>
            {
                if (this.mState != StateMachine.State.Init)
                {
                    exc = (Exception) new ApplicationException("Cannot start state machine in state " + this.mState.ToString());
                }
                else
                {
                    this.mStartCallback = startCallback;
                    this.EnterStateStarting();
                }
            }));
            if (exc != null)
            {
                throw exc;
            }
        }
예제 #3
0
        private void StartMachineCompletion(bool success)
        {
            Logger.Info("Start callback -> {0}", (object)success);
            if (success)
            {
                switch (this.mState)
                {
                case StateMachine.State.Starting:
                    this.EnterStateWaitingForNetwork();
                    break;

                case StateMachine.State.StartingCancel:
                    this.EnterStateStopping();
                    break;

                case StateMachine.State.WaitingForNetwork:
                    Logger.Info("Start machine continuationcalled in state {0}", (object)this.mState);
                    this.mStartCallback = (StateMachine.BooleanCallback)null;
                    return;

                default:
                    Logger.Info("Start machine continuation called in state " + this.mState.ToString());
                    break;
                }
            }
            else
            {
                this.EnterStateError();
            }
            StateMachine.BooleanCallback mStartCallback = this.mStartCallback;
            if (mStartCallback != null)
            {
                mStartCallback(success);
            }
            this.mStartCallback = (StateMachine.BooleanCallback)null;
        }