Exemplo n.º 1
0
        private void ProcessEvent(FSMBase.Event <TData> fsmEvent, object source)
        {
            if (_debugEvent)
            {
                var srcStr = GetSourceString(source);
                _log.Debug("processing {0} from {1} in state {2}", fsmEvent, srcStr, StateName);
            }

            var stateFunc = _stateFunctions[_currentState.StateName];
            var oldState  = _currentState;

            State <TState, TData, TEvent> upcomingState = null;

            if (stateFunc != null)
            {
                upcomingState = stateFunc(fsmEvent);
            }

            if (upcomingState == null)
            {
                upcomingState = HandleEvent(fsmEvent);
            }

            ApplyState(upcomingState);

            if (_debugEvent && !Equals(oldState, upcomingState))
            {
                _log.Debug("transition {0} -> {1}", oldState, upcomingState);
            }
        }
Exemplo n.º 2
0
        private void ProcessMsg(object any, object source)
        {
            var fsmEvent = new FSMBase.Event <TData>(any, _currentState.StateData);

            ProcessEvent(fsmEvent, source);
        }