Пример #1
0
        public static IAwaitableStateMachine <TState, TTrigger> Create <TState, TTrigger>(
            TState initialState, AwaitableConfiguration <TState, TTrigger> config, bool queued = true,
            bool throwOnInvalidTriggers = true, bool throwOnInvalidState = true)
        {
            Contract.NotNull(config != null, nameof(config));

            return(CreateCore <TState, TTrigger, object>(null, _ => CreateDefault(initialState, config, queued, null),
                                                         throwOnInvalidTriggers,
                                                         throwOnInvalidState));
        }
Пример #2
0
        public static IAwaitableStateMachine <TState, TTrigger> Create <TState, TTrigger>(
            TState initialState, AwaitableConfiguration <TState, TTrigger> config, TaskScheduler scheduler,
            bool throwOnInvalidTriggers = true, bool throwOnInvalidState = true)
        {
            Contract.NotNull(config != null, nameof(config));
            Contract.NotNull(scheduler != null, nameof(scheduler));

            return(CreateCore <TState, TTrigger, object>(null, _ => CreateDefault(initialState, config, false, scheduler),
                                                         throwOnInvalidTriggers,
                                                         throwOnInvalidState));
        }
Пример #3
0
        protected RawAwaitableStateMachineBase(TState initialState,
                                               AwaitableConfiguration <TState, TTrigger> awaitableConfiguration)
        {
            CurrentStateRepresentation = awaitableConfiguration.GetInitialStateRepresentation(initialState);
            if (CurrentStateRepresentation == null)
            {
                ExceptionHelper.ThrowInvalidState(initialState);
            }

            Representations = awaitableConfiguration.Representations;
            m_diagnostics   = new RawAwaitableStateMachineDiagnostics <TState, TTrigger>(this);
        }
        private static IAwaitableStateMachine <TState, TTrigger> CreateDefault <TState, TTrigger>(
            TState initialState,
            AwaitableConfiguration <TState, TTrigger> config, bool queued, TaskScheduler scheduler)
        {
            IAwaitableStateMachine <TState, TTrigger> sm;

            /*if (queued) { sm = new QueuedAwaitableStateMachine<TState, TTrigger>(initialState, config); }
             * else */
            {
                sm = scheduler == null
                    ? (IAwaitableStateMachine <TState, TTrigger>)
                     new GuardedAwaitableStateMachine <TState, TTrigger>(initialState, config)
                    : new ScheduledAwaitableStateMachine <TState, TTrigger>(initialState, config, scheduler);
            }

            return(sm);
        }
Пример #5
0
 public RawAwaitableStateMachine(TState initialState,
                                 AwaitableConfiguration <TState, TTrigger> awaitableConfiguration)
     : base(initialState, awaitableConfiguration)
 {
 }
Пример #6
0
 protected GuardedAwaitableStateMachineBase(TState initialState,
                                            AwaitableConfiguration <TState, TTrigger> awaitableConfiguration)
     : base(initialState, awaitableConfiguration)
 {
 }
 public ScheduledAwaitableStateMachine(TState initialState,
                                       AwaitableConfiguration <TState, TTrigger> awaitableConfiguration,
                                       TaskScheduler scheduler)
     : base(initialState, awaitableConfiguration, scheduler)
 {
 }
 protected ScheduledAwaitableStateMachineBase(TState initialState,
                                              AwaitableConfiguration <TState, TTrigger> awaitableConfiguration, TaskScheduler scheduler)
     : base(initialState, awaitableConfiguration)
 {
     Scheduler = scheduler;
 }
Пример #9
0
 protected QueuedAwaitableStateMachineBase(TState initialState, AwaitableConfiguration <TState, TTrigger> config)
     : base(initialState, config)
 {
     actionsQueue = ImmutableQueue.Create <Func <Task> >();
 }