예제 #1
0
        // Deterministically Get Next State
        public ProcessState GetNext(ProcessTransitions procTransitions)
        {
            MachineTransition transition = new MachineTransition(CurrentState, procTransitions);
            ProcessState      nextProcState;

            if (!transitions.TryGetValue(transition, out nextProcState))
            {
                throw new Exception("No known Transition: " + CurrentState + "->" + procTransitions);
            }
            return(nextProcState);
        }
예제 #2
0
        // Mutate to the next Machine State

        public ProcessState MoveNext(ProcessTransitions procTransitions)
        {
            CurrentState = GetNext(procTransitions);
            return(CurrentState);
        }
예제 #3
0
 public MachineTransition(ProcessState currentState, ProcessTransitions transitions)
 {
     CurrentState = currentState;
     Transitions  = transitions;
 }