// 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); }
// Mutate to the next Machine State public ProcessState MoveNext(ProcessTransitions procTransitions) { CurrentState = GetNext(procTransitions); return(CurrentState); }
public MachineTransition(ProcessState currentState, ProcessTransitions transitions) { CurrentState = currentState; Transitions = transitions; }