Ejemplo n.º 1
0
        public ProcessState getNext(ChangeCondition condition)
        {
            StateTransition transition = new StateTransition(CurrentState, condition);
            ProcessState    nextState;

            if (!transitions.TryGetValue(transition, out nextState))
            {
                throw new Exception("Invalid transition: " + CurrentState + " -> " + condition);
            }
            return(nextState);
        }
Ejemplo n.º 2
0
        public static bool run(string command, Dictionary <string, string> options)
        {
            ICommand cmd = CommandFactory.getCommand(command);

            if (cmd == null)
            {
                CommandOutput.commandErrorOutput("No such command!");
                return(false);
            }

            StatusMachine   stateMachine = new StatusMachine();
            ChangeCondition condition    = stateMachine.mapToCondition(cmd);
            ProcessState    currentState = stateMachine.MoveNext(condition);

            Boolean runResult, isResourceCreated;

            while (currentState != ProcessState.Terminated)
            {
                if (stateMachine.isRunningState(currentState) == false)
                {
                    //command is not going to run, must be wrong input
                    CommandOutput.commandErrorOutput(stateMachine.Messages[currentState]);
                }
                else
                {
                    //need to run the command
                    runResult = cmd.execute(options);
                    if (cmd.GetType() == typeof(SetupCommand))
                    {
                        isResourceCreated = Resource.isResourceCreated();
                        condition         = stateMachine.mapToCondition(cmd, runResult, isResourceCreated);
                    }
                    else
                    {
                        condition = stateMachine.mapToCondition(cmd, runResult, false);
                    }
                    currentState = stateMachine.MoveNext(condition);
                    if (currentState == ProcessState.Terminated)
                    {
                        break;
                    }
                }

                while (true)
                {
                    //Fetch a command
                    if (!CommandReader.readCommand())
                    {
                        return(false);
                    }
                    cmd = CommandFactory.getCommand(CommandReader.Command);
                    if (cmd != null)
                    {
                        break;
                    }
                    CommandOutput.commandErrorOutput("No such command!");
                }

                condition    = stateMachine.mapToCondition(cmd);
                currentState = stateMachine.MoveNext(condition);
            }
            return(true);
        }
Ejemplo n.º 3
0
 private void OnEnable()
 {
     changeCondition = (ChangeCondition)target;
 }
Ejemplo n.º 4
0
 public StateTransition(ProcessState currentState, ChangeCondition condition)
 {
     CurrentState = currentState;
     Condition    = condition;
 }
Ejemplo n.º 5
0
 public ProcessState MoveNext(ChangeCondition condition)
 {
     CurrentState = getNext(condition);
     return(CurrentState);
 }