public DynamicStateMachineRunner(DynamicStateMachineConfiguration configuration, IActionRunner actionRunner, ILogger logger) { stateMachine = new DynamicFiniteStateMachine(configuration); states = configuration.States; events = configuration.Events; actions = configuration.Actions; this.actionRunner = actionRunner; this.logger = logger; }
private DynamicStateTransition CreateTransition(string line, DynamicStateMachineConfiguration configuration) { var splitted = line.Split(FileSettings.Delimiter); return(new DynamicStateTransition( EncodeState(splitted[0], configuration), EncodeEvent(splitted[1], configuration), EncodeState(splitted[2], configuration), EncodeAction(splitted[3], configuration))); }
private void ParseLine(string line, DynamicStateMachineConfiguration configuration) { if (IsSkipLine(line)) { return; } if (line.Contains(FileSettings.Delimiter)) { configuration .TransitionTable .Add(CreateTransition(line, configuration)); } else { configuration.StartState = EncodeState(line, configuration); } }
private int EncodeAction(string value, DynamicStateMachineConfiguration configuration) { return(Encode(value, configuration.Actions, ref actionCount)); }
private int EncodeEvent(string value, DynamicStateMachineConfiguration configuration) { return(Encode(value, configuration.Events, ref eventCount)); }
private int EncodeState(string value, DynamicStateMachineConfiguration configuration) { return(Encode(value, configuration.States, ref stateCount)); }
public DynamicFiniteStateMachine(DynamicStateMachineConfiguration configuration) { TransitionTable = configuration.TransitionTable.ToArray(); CurrentState = configuration.StartState; backupState = configuration.StartState; }