public ErrorState([NotNull] LaundryVault statusVault, BasicVault <LaundryMachineStateCode> basicV, IEventRaiser eventRaiser, [NotNull] ILaundryMachineTaskExecutionContext <TaskResult> context, TimeSpan addOneUnitDamp, TimeSpan removeOneUnitDirt, TimeSpan removeOneUnitDamp) : base( StateMachineStateType.Error, LaundryMachineStateCode.Error, statusVault, basicV, eventRaiser, context, addOneUnitDamp, removeOneUnitDirt, removeOneUnitDamp) => throw new NotImplementedException();
public FullState([NotNull] LaundryVault vault, [NotNull] BasicVault <LaundryMachineStateCode> stateCodeVault, [NotNull] IEventRaiser raiser, [NotNull] ILaundryMachineTaskExecutionContext <TaskResult> executionContext, TimeSpan addOneUnitDamp, TimeSpan removeOneUnitDirt, TimeSpan removeOneUnitDamp) : base( StateMachineStateType.WaitForMoreInputOnly, LaundryMachineStateCode.Full, vault, stateCodeVault, raiser, executionContext, addOneUnitDamp, removeOneUnitDirt, removeOneUnitDamp) { }
internal PoweredDownState([NotNull] LaundryVault vault, [NotNull] BasicVault <LaundryMachineStateCode> stateVault, [NotNull] IEventRaiser raiser, [NotNull] ILaundryMachineTaskExecutionContext <TaskResult> context, TimeSpan addOneUnitDamp, TimeSpan removeOneUnitDirt, TimeSpan removeOneUnitDamp) : base( StateMachineStateType.WaitForMoreInputOnly, LaundryMachineStateCode.PoweredDown, vault, stateVault, raiser, context, addOneUnitDamp, removeOneUnitDirt, removeOneUnitDamp) { if (!context.IsActive || context.IsDisposed || context.IsFaulted) { throw new ArgumentException("Context must not be in a disposed or a faulted state and must be active."); } }
protected LaundryMachineTaskBasedStateBase(LaundryMachineStateCode code, CommandIds commandIds, [NotNull] IEventRaiser raiser, [NotNull] BasicVault <LaundryMachineStateCode> stateVault, [NotNull] LaundryVault vault, [NotNull] ILaundryMachineTaskExecutionContext <TaskResult> executionContext, ImmutableArray <LaundryMachineStateCode> nextStatesOnCompletion, TimeSpan addOneUnitDamp, TimeSpan removeOneUnitDirt, TimeSpan removeOneUnitDamp) : base( StateMachineStateType.WaitForTaskComplete, code, vault, stateVault, raiser, executionContext, addOneUnitDamp, removeOneUnitDirt, removeOneUnitDamp) { if (stateVault == null) { throw new ArgumentNullException(nameof(stateVault)); } if (nextStatesOnCompletion.IsDefault || nextStatesOnCompletion.IsEmpty || nextStatesOnCompletion.Contains(code)) { throw new ArgumentException( $@"Parameter must not be default, empty or contain the value passed by the {nameof(code)} parameter.", nameof(nextStatesOnCompletion)); } if (executionContext == null) { throw new ArgumentNullException(nameof(executionContext)); } if (!executionContext.IsActive || executionContext.IsDisposed) { throw new ArgumentException(@"The execution context is not in a useable state.", nameof(executionContext)); } if (code.GetStateTaskType() == TaskType.NullTask) { throw new ArgumentException("This state must be a task-based state."); } CommandId = commandIds; _taskEndedTransProcedure = new LocklessLazyWriteOnce <LTransProcedure>(InitTaskEndedTransProcedure); _taskEndedAdditionalTransProcedure = new LocklessLazyWriteOnce <LTransAdditionalProcedure>(InitTaskEndedAdditionalTransProc); _taskEndedTransition = new LocklessLazyWriteOnce <LaundryMachineStateTransition>(() => InitTaskEndedTransition(nextStatesOnCompletion)); _cancellationTransition = new LocklessLazyWriteOnce <LaundryMachineStateTransition>(() => InitCancellationTransition(code, commandIds)); }
protected internal ActivatingState([NotNull] IEventRaiser raiser, [NotNull] BasicVault <LaundryMachineStateCode> stateVault, [NotNull] LaundryVault vault, [NotNull] ILaundryMachineTaskExecutionContext <TaskResult> executionContext, TimeSpan addOneUnitDamp, TimeSpan removeOneUnitDirt, TimeSpan removeOneUnitDamp) : base( LaundryMachineStateCode.Activating, CommandIds.PowerUp, raiser, stateVault, vault, executionContext, ImmutableArray.Create(LaundryMachineStateCode.Empty, LaundryMachineStateCode.Full, LaundryMachineStateCode.PoweredDown), addOneUnitDamp, removeOneUnitDirt, removeOneUnitDamp) { }
protected internal ActivateTask([NotNull] ILaundryMachineTaskExecutionContext <TaskResult> executionContext, [NotNull] LaundryStatusVault statusFlagsVault, [NotNull] IEventRaiser eventRaiser) : base(executionContext, statusFlagsVault, eventRaiser, TaskType.ActivateTask, CommandIds.PowerUp) { }