public SimpleStateMachine( TMachineState initialState, IStateMachineDispatcher <TMachineState, TMachineEvent> machineDispatcher) { this.CurrentState = initialState; this.machineDispatcher = machineDispatcher; }
public EventStateMachine( TMachineState initialState, IStateMachineDispatcher <TMachineState, TMachineEvent, TGeneratedEvent> machineDispatcher, ISynchronizationQueueFactory synchronizationQueueFactory) { if (synchronizationQueueFactory is null) { throw new ArgumentNullException(nameof(synchronizationQueueFactory)); } CurrentState = initialState; this.machineDispatcher = machineDispatcher ?? throw new ArgumentNullException(nameof(machineDispatcher)); this.synchronizationQueue = synchronizationQueueFactory.Create <TMachineEvent>(ProcessImpl); }