Пример #1
0
        /// <summary>
        /// Ignore the event in this state (no exception is thrown)
        /// </summary>
        /// <typeparam name="TData">The event data type</typeparam>
        /// <param name="event">The ignored event</param>
        /// <param name="filter">The filter to apply to the event data</param>
        /// <returns></returns>
        protected EventActivities <TInstance> Ignore <TData>(Event <TData> @event,
                                                             StateMachineEventFilter <TInstance, TData> filter)
        {
            ActivityBinder <TInstance> activityBinder = new IgnoreEventActivityBinder <TInstance, TData>(@event, filter);

            return(new DataEventActivityBinder <TInstance, TData>(this, @event, activityBinder));
        }
 public StateMachineEventActivitiesBuilder <TInstance> When <TData>(Event <TData> @event,
                                                                    StateMachineEventFilter <TInstance, TData> filter,
                                                                    Func <EventActivityBinder <TInstance, TData>, EventActivityBinder <TInstance, TData> > configure)
 {
     _activities.Add(configure(_machine.When(@event, filter)));
     return(this);
 }
Пример #3
0
 public DataEventActivityBinder(StateMachine <TInstance> machine, Event <TData> @event,
                                StateMachineEventFilter <TInstance, TData> filter, params ActivityBinder <TInstance>[] activities)
 {
     _event      = @event;
     _activities = activities ?? new ActivityBinder <TInstance> [0];
     _machine    = machine;
     _filter     = filter;
 }
Пример #4
0
 public TriggerEventActivityBinder(StateMachine <TInstance> machine, Event @event, StateMachineEventFilter <TInstance> filter,
                                   params ActivityBinder <TInstance>[] activities)
 {
     _event      = @event;
     _filter     = filter;
     _machine    = machine;
     _activities = activities ?? new ActivityBinder <TInstance> [0];
 }
Пример #5
0
        DataEventActivityBinder(StateMachine <TInstance> machine, Event <TData> @event,
                                StateMachineEventFilter <TInstance, TData> filter, ActivityBinder <TInstance>[] activities,
                                params ActivityBinder <TInstance>[] appendActivity)
        {
            _activities = new ActivityBinder <TInstance> [activities.Length + appendActivity.Length];
            Array.Copy(activities, 0, _activities, 0, activities.Length);
            Array.Copy(appendActivity, 0, _activities, activities.Length, appendActivity.Length);

            _event   = @event;
            _machine = machine;
            _filter  = filter;
        }
Пример #6
0
 /// <summary>
 /// When the event is fired in this state, and the event data matches the filter expression, execute the chained activities
 /// </summary>
 /// <typeparam name="TData">The event data type</typeparam>
 /// <param name="event">The fired event</param>
 /// <param name="filter">The filter applied to the event</param>
 /// <returns></returns>
 protected EventActivityBinder <TInstance, TData> When <TData>(Event <TData> @event,
                                                               StateMachineEventFilter <TInstance, TData> filter)
 {
     return(new DataEventActivityBinder <TInstance, TData>(this, @event, filter));
 }
 public SelectedStateEventFilter(StateMachineEventFilter <TInstance, TData> filter)
 {
     _filter = filter;
 }
Пример #8
0
 public void Ignore <T>(Event <T> @event, StateMachineEventFilter <TInstance, T> filter)
 {
     _ignoredEvents[@event] = new SelectedStateEventFilter <TInstance, T>(filter);
 }
Пример #9
0
 public ConditionalEventActivity(Activity <TInstance, TData> activity, StateMachineEventFilter <TInstance, TData> filter)
 {
     _activity = activity;
     _filter   = filter;
 }
 public StateMachineEventActivitiesBuilder <TInstance> Ignore <TData>(Event <TData> @event,
                                                                      StateMachineEventFilter <TInstance, TData> filter)
 {
     _activities.Add(_machine.Ignore(@event, filter));
     return(this);
 }