コード例 #1
0
ファイル: SystemStateMachine.cs プロジェクト: beomyeol/reef
 /// <summary>
 /// Based on the event and current state to determine the next state
 /// </summary>
 /// <param name="systemEvent"></param>
 /// <returns></returns>
 internal SystemState GetNext(SystemStateEvent systemEvent)
 {
     var transition = new StateTransition<SystemState, SystemStateEvent>(_currentState, systemEvent);
     SystemState nextState;
     if (!Transitions.TryGetValue(transition, out nextState))
     {
         throw new SystemStateTransitionException(_currentState, systemEvent);
     }
     return nextState;
 }
コード例 #2
0
        /// <summary>
        /// Based on the event and current state to determine the next state
        /// </summary>
        /// <param name="systemEvent"></param>
        /// <returns></returns>
        internal SystemState GetNext(SystemStateEvent systemEvent)
        {
            var         transition = new StateTransition <SystemState, SystemStateEvent>(_currentState, systemEvent);
            SystemState nextState;

            if (!Transitions.TryGetValue(transition, out nextState))
            {
                throw new SystemStateTransitionException(_currentState, systemEvent);
            }
            return(nextState);
        }
コード例 #3
0
 /// <summary>
 /// Move to next state based on the event given
 /// </summary>
 /// <param name="stateEvent"></param>
 /// <returns></returns>
 internal SystemState MoveNext(SystemStateEvent stateEvent)
 {
     _currentState = GetNext(stateEvent);
     return(_currentState);
 }
コード例 #4
0
ファイル: SystemStateMachine.cs プロジェクト: beomyeol/reef
 /// <summary>
 /// Move to next state based on the event given
 /// </summary>
 /// <param name="stateEvent"></param>
 /// <returns></returns>
 internal SystemState MoveNext(SystemStateEvent stateEvent)
 {
     _currentState = GetNext(stateEvent);
     return _currentState;
 }
コード例 #5
0
 /// <summary>
 /// Format a message
 /// </summary>
 /// <param name="systemState"></param>
 /// <param name="stateEvent"></param>
 /// <returns></returns>
 private static string ExceptionMessage(SystemState systemState, SystemStateEvent stateEvent)
 {
     return(string.Format(CultureInfo.InvariantCulture, "Unexpected event {0} in state {1}.", stateEvent, systemState));
 }
コード例 #6
0
 /// <summary>
 /// Exception when error happens in system state transition
 /// </summary>
 /// <param name="systemState"></param>
 /// <param name="stateEvent"></param>
 internal SystemStateTransitionException(SystemState systemState, SystemStateEvent stateEvent)
     : base(ExceptionMessage(systemState, stateEvent))
 {
 }
コード例 #7
0
 /// <summary>
 /// Format a message
 /// </summary>
 /// <param name="systemState"></param>
 /// <param name="stateEvent"></param>
 /// <returns></returns>
 private static string ExceptionMessage(SystemState systemState, SystemStateEvent stateEvent)
 {
     return string.Format(CultureInfo.InvariantCulture, "Unexpected event {0} in state {1}.", stateEvent, systemState);
 }
コード例 #8
0
 /// <summary>
 /// Exception when error happens in system state transition
 /// </summary>
 /// <param name="systemState"></param>
 /// <param name="stateEvent"></param>
 internal SystemStateTransitionException(SystemState systemState, SystemStateEvent stateEvent)
     : base(ExceptionMessage(systemState, stateEvent))
 {            
 }