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(); }
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; } }
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; }