private static DebugState BuildDebugState(IDSFDataObject dataObject, StateType stateType, bool hasErrors, string existingErrors, DateTime?workflowStartTime, bool durationVisible, Guid parentInstanceId, string name, bool hasError)
        {
            var debugState = new DebugState
            {
                ID                    = dataObject.OriginalInstanceID,
                ParentID              = parentInstanceId,
                WorkspaceID           = dataObject.WorkspaceID,
                StateType             = stateType,
                StartTime             = workflowStartTime ?? DateTime.Now,
                EndTime               = DateTime.Now,
                ActivityType          = ActivityType.Workflow,
                DisplayName           = dataObject.ServiceName,
                IsSimulation          = dataObject.IsOnDemandSimulation,
                ServerID              = dataObject.ServerID,
                OriginatingResourceID = dataObject.ResourceID,
                OriginalInstanceID    = dataObject.OriginalInstanceID,
                Server                = name,
                Version               = string.Empty,
                SessionID             = dataObject.DebugSessionID,
                EnvironmentID         = dataObject.DebugEnvironmentId,
                ClientID              = dataObject.ClientID,
                SourceResourceID      = dataObject.SourceResourceID,
                Name                  = stateType.ToString(),
                HasError              = hasErrors || hasError,
                ErrorMessage          = existingErrors,
                IsDurationVisible     = durationVisible
            };

            return(debugState);
        }
示例#2
0
        public IState GetState(StateType stateType)
        {
            var stateName = stateType.ToString() + Constants.State;
            var type      = _stateService.StateTypes.First(x => x.Name.Equals(stateName));

            return((IState)Activator.CreateInstance(type));
        }
示例#3
0
 // FSM Control
 IEnumerator GuardFSM()
 {
     // Execute the current coroutine (state)
     while (true)
     {
         ControlAnimation();
         yield return(StartCoroutine(currentState.ToString()));
     }
 }
示例#4
0
    public static void WriteDataPoint(int playerNumber, StateType type, float value)
    {
        string filename = @"\Statestics\" + SceneManager.GetActiveScene().name + @"\player_" + playerNumber + @"\" + type.ToString() + ".csv";

        using (StreamWriter w = File.AppendText(Directory.GetCurrentDirectory().ToString() + filename))
        {
            w.WriteLine(Time.time + ";" + type.ToString() + ";" + value + "\n");
        }
    }
            /// <summary>
            /// Get the unique state name for the given {type, analyzer} tuple.
            /// Note that this name is used by the underlying persistence stream of the corresponding <see cref="DiagnosticState"/> to Read/Write diagnostic data into the stream.
            /// If any two distinct {type, analyzer} tuples have the same diagnostic state name, we will end up sharing the persistence stream between them, leading to duplicate/missing/incorrect diagnostic data.
            /// </summary>
            private static ValueTuple<string, VersionStamp> GetNameAndVersion(DiagnosticAnalyzer analyzer, StateType type)
            {
                Contract.ThrowIfNull(analyzer);

                // Get the unique ID for given diagnostic analyzer.
                // note that we also put version stamp so that we can detect changed analyzer.
                var tuple = analyzer.GetAnalyzerIdAndVersion();
                return ValueTuple.Create(UserDiagnosticsPrefixTableName + "_" + type.ToString() + "_" + tuple.Item1, tuple.Item2);
            }
示例#6
0
    void updateState()
    {
        StateType state = getState();

        if (state != current_state)
        {
            if (vocal)
            {
                Debug.Log("Setting state for (from " + current_state.ToString().ToUpper() + " to " + state.ToString().ToUpper() + ") for " + this.gameObject.name + "\n");
            }
        }
        if (state == StateType.No && current_state != StateType.No)
        {
            SetInteractable(false);
        }

        if (state == StateType.NoResources && current_state == StateType.No)
        {
            SetInteractable(true);
        }

        if (state == StateType.NoResources)
        {
            if (Moon.Instance.WaveInProgress || Peripheral.Instance.WaveCountdownOngoing())
            {
                remaining_time -= Time.deltaTime;
            }
            button.time.text = Mathf.CeilToInt(remaining_time).ToString();
            button.SetButtonInteractable(remaining_time <= 0);
        }

        if (state == StateType.Yes && current_state != StateType.Yes)
        {
            SetInteractable(true);
            if (button.time != null)
            {
                button.time.text = Mathf.CeilToInt(remaining_time).ToString();
            }
            button.SetButtonInteractable(remaining_time <= 0);
        }

        if (state == StateType.Yes && current_state == StateType.Yes && !button.gameObject.activeSelf)
        {
            if (vocal)
            {
                Debug.Log("Button's button is interactable " + button.my_button.interactable + "\n");
            }
            if (vocal)
            {
                Debug.Log("Button gameObject is active " + button.gameObject.activeSelf + "\n");
            }
            SetInteractable(true);
        }

        current_state = state;
    }
示例#7
0
            /// <summary>
            /// Get the unique state name for the given {type, provider} tuple.
            /// Note that this name is used by the underlying persistence stream of the corresponding <see cref="DiagnosticState"/> to Read/Write diagnostic data into the stream.
            /// If any two distinct {type, provider} tuples have the same diagnostic state name, we will end up sharing the persistence stream between them, leading to duplicate/missing/incorrect diagnostic data.
            /// </summary>
            private static ValueTuple <string, VersionStamp> GetUniqueDiagnosticStateNameAndVersion(StateType type, ProviderId providerId, DiagnosticAnalyzer provider)
            {
                Contract.ThrowIfNull(provider);

                // Get the unique ID for given diagnostic analyzer.
                // note that we also put version stamp so that we can detect changed analyzer.
                var tuple = WorkspaceAnalyzerManager.GetUniqueIdForAnalyzer(provider);

                return(ValueTuple.Create(UserDiagnosticsPrefixTableName + "_" + type.ToString() + "_" + tuple.Item1, tuple.Item2));
            }
示例#8
0
 public void UpdateStates()
 {
     if (current != next)
     {
         current = next;
         Debug.Log("next states is " + current.ToString());
         StartCurrentState();
         Debug.Log("updateStates");
     }
 }
            /// <summary>
            /// Get the unique state name for the given {type, analyzer} tuple.
            /// Note that this name is used by the underlying persistence stream of the corresponding <see cref="DiagnosticState"/> to Read/Write diagnostic data into the stream.
            /// If any two distinct {type, analyzer} tuples have the same diagnostic state name, we will end up sharing the persistence stream between them, leading to duplicate/missing/incorrect diagnostic data.
            /// </summary>
            private static ValueTuple <string, VersionStamp> GetNameAndVersion(DiagnosticAnalyzer analyzer, StateType type)
            {
                Contract.ThrowIfNull(analyzer);

                // Get the unique ID for given diagnostic analyzer.
                // note that we also put version stamp so that we can detect changed analyzer.
                var tuple = analyzer.GetUniqueId();

                return(ValueTuple.Create(UserDiagnosticsPrefixTableName + "_" + type.ToString() + "_" + tuple.Item1, tuple.Item2));
            }
示例#10
0
        public void should_return_the_state_of_the_cell()
        {
            const int xCoordinate = 0;
            const int yCoordinate = 0;

            _grid.Initialize();

            StateType state = _grid.GetCellState(xCoordinate, yCoordinate);

            Assert.IsNotEmpty(state.ToString());
        }
            /// <summary>
            /// Get the unique state name for the given {type, provider} tuple.
            /// Note that this name is used by the underlying persistence stream of the corresponding <see cref="DiagnosticState"/> to Read/Write diagnostic data into the stream.
            /// If any two distinct {type, provider} tuples have the same diagnostic state name, we will end up sharing the persistence stream between them, leading to duplicate/missing/incorrect diagnostic data.
            /// </summary>
            private static ValueTuple <string, VersionStamp> GetUniqueDiagnosticStateNameAndVersion(StateType type, ProviderId providerId, DiagnosticAnalyzer provider)
            {
                Contract.ThrowIfNull(provider);

                // Get the unique ID for given diagnostic analyzer.
                // note that we also put version stamp so that we can detect changed provider
                var providerType = provider.GetType();
                var location     = providerType.Assembly.Location;

                return(ValueTuple.Create(UserDiagnosticsPrefixTableName + "_" + type.ToString() + "_" + providerType.AssemblyQualifiedName, GetProviderVersion(location)));
            }
示例#12
0
 /// <summary>
 /// Function to set the game state to the one passed as parameter.
 /// </summary>
 /// <param name="state"> State to change to.</param>
 public void SetGameState(StateType state)
 {
     if (gameState != state)
     {
         gameState = state;
     }
     else
     {
         Debug.LogWarning("State already in " + state.ToString());
     }
 }
示例#13
0
    public void ChangeState(StateType state)
    {
        if (_state != null)
        {
            _state.Exit();
        }

        switch (state)
        {
        case StateType.Idle:
            _state = new StateIdle(this);
            break;

        case StateType.Walk:
            _state = new StateWalk(this);
            break;

        case StateType.Run:
            _state = new StateRun(this);
            break;

        case StateType.Prostrate:
            _state = new StateProstrate(this);
            break;

        case StateType.Sit:
            _state = new StateSit(this);
            break;

        case StateType.Jump:
            throw new System.NotImplementedException("まだ未実装です : " + state.ToString());

        default:
            throw new System.NotImplementedException("想定外のステートです : " + state.ToString());
        }

        _state.Enter();
    }
示例#14
0
        public static void Write(string writeFileData, LevelType level)
        {
            if (_LogState == StateType.Stop)
            {
                return;
            }

            if (_LogCacheList.Count > _LogMaxCapacity)
            {
                _LogCacheList.Clear();
            }
            if (!string.IsNullOrEmpty(writeFileData))
            {
                writeFileData = "Log State:" + _LogState.ToString() + "/" + DateTime.Now.ToString() + "/" + writeFileData;
                if (level == LevelType.High)
                {
                    writeFileData = "@@@ Error Or Warring Or Important  !!! @@@" + writeFileData;

                    //重要信息或者错误或者??????
                }
                switch (_LogState)
                {
                case StateType.Develop:
                    AppendDataToFile(writeFileData);
                    break;

                case StateType.Speacial:
                    if (level == LevelType.High || level == LevelType.Special)
                    {
                        AppendDataToFile(writeFileData);
                    }
                    break;

                case StateType.Deploy:
                    if (level == LevelType.High)
                    {
                        AppendDataToFile(writeFileData);
                    }
                    break;

                case StateType.Stop:
                    break;

                default:
                    break;
                }
            }
        }
示例#15
0
    public IEnumerator Started()
    {
        while (isActiveAndEnabled)
        {
            yield return(new WaitForSeconds(1));

            if (Done)
            {
                int       s     = Random.Range(0, ((int)StateType.size - stage));
                StateType state = (StateType)s;
                string    name  = state.ToString();
                print(name);
                StartCoroutine(name);
            }
        }
    }
示例#16
0
        /// <summary>
        ///删除状态
        /// </summary>
        public void DeleteState(StateType type)
        {
            // Check for NullState before deleting
            if (type == StateType.NullState)
            {
                Debug.LogError("FSM ERROR: NullStateID is not allowed for a real state");
                return;
            }

            // Search the List and delete the state if it's inside it
            if (states.ContainsKey(type))
            {
                states.Remove(type);
                return;
            }
            Debug.LogErrorFormat("FSM ERROR: Impossible to delete state {0} . It was not on the list of states",
                                 type.ToString());
        }
示例#17
0
        private TextWithStyle StateConveter(StateType state)
        {
            TextWithStyle vws = new TextWithStyle(state.ToString());

            if (state == StateType.Done)
            {
                vws.HtmlClass = "cl-green";
            }
            else if (state == StateType.InProgress)
            {
                vws.HtmlClass = "cl-blue font-bold";
            }
            else if (state == StateType.Planned)
            {
                vws.HtmlClass = "cl-gray";
            }
            return(vws);
        }
示例#18
0
 /// <summary>
 /// 添加状态
 /// </summary>
 public void AddState(StateType type, FSMState <T> state)
 {
     if (state == null)
     {
         Debug.LogError("FSM ERROR: Null reference is not allowed");
     }
     if (states.Count == 0)
     {
         CurrentState     = state;
         CurrentStateType = state.StateType;
     }
     if (states.ContainsKey(type))
     {
         Debug.LogErrorFormat("FSM ERROR: Impossible to add state {0} because state has already been added",
                              type.ToString());
         return;
     }
     states.Add(type, state);
 }
示例#19
0
        static void Main(string[] args)
        {
            string      Tape  = Console.ReadLine() + '\0';
            StateType   State = StateType.s1;
            CommandType Command;

            Dictionary <SC, StateType> Automaton = new Dictionary <SC, StateType>();

            Automaton.Add(new SC(StateType.s1, CommandType.cMain), StateType.s2);
            Automaton.Add(new SC(StateType.s2, CommandType.cMain), StateType.s2);
            Automaton.Add(new SC(StateType.s2, CommandType.cAt), StateType.s3);
            Automaton.Add(new SC(StateType.s3, CommandType.cMain), StateType.s4);
            Automaton.Add(new SC(StateType.s4, CommandType.cMain), StateType.s4);
            Automaton.Add(new SC(StateType.s4, CommandType.cDot), StateType.s5);
            Automaton.Add(new SC(StateType.s5, CommandType.cMain), StateType.sF);
            Automaton.Add(new SC(StateType.sF, CommandType.cMain), StateType.sF);
            Automaton.Add(new SC(StateType.sF, CommandType.cDot), StateType.s5);


            try
            {
                while (true)
                {
                    Console.WriteLine("State: " + State.ToString());

                    Command = convertCommand(Tape[0]);
                    Tape    = Tape.Substring(1);

                    if (Command == CommandType.cEnd)
                    {
                        break;
                    }

                    State = Automaton[new SC(State, Command)];
                }
            }
            catch (Exception)
            {
                Console.WriteLine("Incorrect transition");
            }
        }
        // flat file output methods
        public string ToFlatFileStringAllData()
        {
            const string  del     = ", ";
            StringBuilder dataStr = new StringBuilder();

            // output string
            dataStr.Append(_securityObj.Name);
            dataStr.Append(del); dataStr.Append(TimeStamp.ToString("yyyy/MM/dd hh:mm:ss.ffffff"));
            dataStr.Append(del); dataStr.Append(BinCnt.ToString());
            dataStr.Append(del); dataStr.Append(StateType.ToString());
            dataStr.Append(del); dataStr.Append(Bid.ToString());
            dataStr.Append(del); dataStr.Append(BidVol.ToString());
            dataStr.Append(del); dataStr.Append(BidOpen.ToString());
            dataStr.Append(del); dataStr.Append(BidVolOpen.ToString());
            dataStr.Append(del); dataStr.Append(BidVolChg.ToString());
            dataStr.Append(del); dataStr.Append(BidVolChgSum.ToString());
            dataStr.Append(del); dataStr.Append(BidVolChgCnt.ToString());
            dataStr.Append(del); dataStr.Append(VolAtBid.ToString());
            dataStr.Append(del); dataStr.Append(TrdCntBid.ToString());
            dataStr.Append(del); dataStr.Append(Ask.ToString());
            dataStr.Append(del); dataStr.Append(AskVol.ToString());
            dataStr.Append(del); dataStr.Append(AskOpen.ToString());
            dataStr.Append(del); dataStr.Append(AskVolOpen.ToString());
            dataStr.Append(del); dataStr.Append(AskVolChg.ToString());
            dataStr.Append(del); dataStr.Append(AskVolChgSum.ToString());
            dataStr.Append(del); dataStr.Append(AskVolChgCnt.ToString());
            dataStr.Append(del); dataStr.Append(VolAtAsk.ToString());
            dataStr.Append(del); dataStr.Append(TrdCntAsk.ToString());
            dataStr.Append(del); dataStr.Append(Mid.ToString());
            dataStr.Append(del); dataStr.Append(MidOpen.ToString());
            dataStr.Append(del); dataStr.Append(MidScaled.ToString("#.0000"));
            dataStr.Append(del); dataStr.Append(MidScaledOpen.ToString("#.0000"));
            dataStr.Append(del); dataStr.Append(LastTrdPrice.ToString());
            dataStr.Append(del); dataStr.Append(LastPriceOpn.ToString());
            dataStr.Append(del); dataStr.Append(LastTrdSize.ToString());

            return(dataStr.ToString());
        }
示例#21
0
        public void EvaluteTime()
        {
            var now = Netomity.Utility.SystemTime.Now;
            var tod = now.TimeOfDay;

            CalcTimes(now);
            var       morning   = Sunrise.TimeOfDay - Offset;
            var       evening   = Sunset.TimeOfDay + Offset;
            StateType calcState = null;

            if (tod < morning || tod > evening)
            {
                calcState = StateType.Dark;
            }
            else
            {
                calcState = StateType.Light;
            }
            if (this.State.Primary != calcState)
            {
                this.Command(Conversions.ValueToStringEnum <CommandType>(calcState.ToString()));
            }
        }
    public void ApplyState(StateType state, params object[] args)
    {
        if (_currentState != state)
        {
            OnStateChange(_currentState, state, args);
            _currentState = state;
            _animator.Play(_currentState.ToString().ToLower(), -1, 0f);

            switch (_currentState)
            {
            case StateType.Fight:
            case StateType.Idle:
            case StateType.Sticker:
                break;

            case StateType.Walk:
                OnWalk(args);
                break;

            default:
                break;
            }
        }
    }
        public string ToStringAllData()
        {
            string dataStr = _securityObj.Name +
                             " " + TimeStamp.ToLongTimeString() +
                             "  Type " + StateType.ToString() +
                             //"  Bid " + Bid.ToString() +
                             //"  BidOpn " + BidOpen.ToString() +
                             //"  BidVol " + BidVol.ToString() +
                             //"  BidVolOpen " + BidVolOpen.ToString() +
                             //"  BidVolChg " + BidVolChg.ToString() +
                             //"  BidVolChgSum " + BidVolChgSum.ToString() +
                             "  BidVolChgCnt " + BidVolChgCnt.ToString() +
                             //"  VolAtBid " + VolAtBid.ToString() +
                             //"  TrdCntBid " + TrdCntBid.ToString() +
                             //"  Ask " + Ask.ToString() +
                             //"  AskOpen " + AskOpen.ToString() +
                             //"  AskVol " + AskVol.ToString() +
                             //"  AskVolOpen " + AskVolOpen.ToString() +
                             //"  AskVolChg " + AskVolChg.ToString() +
                             //"  AskVolChgSum " + AskVolChgSum.ToString() +
                             "  AskVolChgCnt " + AskVolChgCnt.ToString() +
                             //"  VolAtAsk " + VolAtAsk.ToString() +
                             //"  TrdCntAsk  " + TrdCntAsk.ToString() +
                             "  Mid " + Mid.ToString() +
                             //"  MidOpn " + MidOpen.ToString() +
                             //"  MidScaled " + MidScaled.ToString("#.00") +
                             //"  MidScaledOpen " + MidScaledOpen.ToString("#.00") +
                             //"  LastPrice " + LastTrdPrice.ToString() +
                             //"  LastPriceOpn " + LastPriceOpn.ToString() +
                             "  LastSize " + LastTrdSize.ToString();

            // dataStr = SecurityObj.Name + Environment.NewLine + " {" + Environment.NewLine +
            //    "  LastSize " + LastTrdSize.ToString() + Environment.NewLine + " }";

            return(dataStr);
        }
 public Entry(Text scoreBoard, StateType stateType)
 {
     rowName         = stateType.ToString().ToLower();
     this.scoreBoard = scoreBoard;
 }
示例#25
0
        /// <summary>
        /// 触发事件
        /// </summary>
        /// <param name="stateEvent">State event.</param>
        /// <param name="toStateId">To state identifier.</param>
        /// <param name="objs">Objects.</param>
        public void ActionEvent(StateEvent stateEvent, StateType toStateId, params object[] objs)
        {
            Dictionary <int, int> dic;

            if (!stateEventDic.TryGetValue((int)stateEvent, out dic))
            {
                Debug.LogError("stateEvent" + stateEvent.ToString() + "没有注册");
                return;
            }
            if (!dic.ContainsKey(curStateId))
            {
                Debug.LogError("stateEvent" + stateEvent.ToString() + "不能触发" + "cursateId is " + curStateId.ToString() + "nextStateId is " + toStateId.ToString());
                return;
            }
            if (dic[curStateId] != (int)toStateId)
            {
                Debug.LogError("stateEvent" + stateEvent.ToString() + "不能触发" + "cursateId is " + curStateId.ToString() + "nextStateId is " + toStateId.ToString());
                return;
            }

            ChangeState((int)toStateId, objs);
        }
示例#26
0
        public override string ToString()
        {
            string repetitions = String.Empty;

            if (MinRepetitions != 1 || MaxRepetitions != 1)
            {
                repetitions = "{" + MinRepetitions.ToString() + "," + MaxRepetitions.ToString() + "}";
            }
            return(string.Format("{0}{1}{2}"
                                 , StateName
                                 , StateType == StateType.NotApplicable?string.Empty:"(" + StateType.ToString() + ")"
                                 , repetitions));
        }
示例#27
0
        public void DispatchDebugState(IDSFDataObject dataObject, StateType stateType, bool hasErrors, string existingErrors, out ErrorResultTO errors, DateTime?workflowStartTime = null, bool interrogateInputs = false, bool interrogateOutputs = false, bool durationVisible = true)
        {
            errors = new ErrorResultTO();
            if (dataObject != null)
            {
                Guid parentInstanceId;
                Guid.TryParse(dataObject.ParentInstanceID, out parentInstanceId);
                bool hasError     = dataObject.Environment.HasErrors();
                var  errorMessage = String.Empty;
                if (hasError)
                {
                    errorMessage = dataObject.Environment.FetchErrors();
                }
                if (String.IsNullOrEmpty(existingErrors))
                {
                    existingErrors = errorMessage;
                }
                else if (!existingErrors.Contains(errorMessage))
                {
                    existingErrors += Environment.NewLine + errorMessage;
                }
                string name = "localhost";
                Guid   remoteID;
                bool   hasRemote = Guid.TryParse(dataObject.RemoteInvokerID, out remoteID);
                if (hasRemote)
                {
                    var res = ResourceCatalog.Instance.GetResource(GlobalConstants.ServerWorkspaceID, remoteID);
                    if (res != null)
                    {
                        name = remoteID != Guid.Empty ? ResourceCatalog.Instance.GetResource(GlobalConstants.ServerWorkspaceID, remoteID).ResourceName : "localhost";
                    }
                }
                var debugState = new DebugState
                {
                    ID                    = dataObject.OriginalInstanceID,
                    ParentID              = parentInstanceId,
                    WorkspaceID           = dataObject.WorkspaceID,
                    StateType             = stateType,
                    StartTime             = workflowStartTime ?? DateTime.Now,
                    EndTime               = DateTime.Now,
                    ActivityType          = ActivityType.Workflow,
                    DisplayName           = dataObject.ServiceName,
                    IsSimulation          = dataObject.IsOnDemandSimulation,
                    ServerID              = dataObject.ServerID,
                    OriginatingResourceID = dataObject.ResourceID,
                    OriginalInstanceID    = dataObject.OriginalInstanceID,
                    Server                = name,
                    Version               = string.Empty,
                    SessionID             = dataObject.DebugSessionID,
                    EnvironmentID         = dataObject.DebugEnvironmentId,
                    ClientID              = dataObject.ClientID,
                    Name                  = stateType.ToString(),
                    HasError              = hasErrors || hasError,
                    ErrorMessage          = existingErrors,
                    IsDurationVisible     = durationVisible
                };

                if (interrogateInputs)
                {
                    ErrorResultTO invokeErrors;
                    var           defs   = DataListUtil.GenerateDefsFromDataListForDebug(FindServiceShape(dataObject.WorkspaceID, dataObject.ResourceID), enDev2ColumnArgumentDirection.Input);
                    var           inputs = GetDebugValues(defs, dataObject, out invokeErrors);
                    errors.MergeErrors(invokeErrors);
                    debugState.Inputs.AddRange(inputs);
                }
                if (interrogateOutputs)
                {
                    ErrorResultTO invokeErrors;

                    var defs   = DataListUtil.GenerateDefsFromDataListForDebug(FindServiceShape(dataObject.WorkspaceID, dataObject.ResourceID), enDev2ColumnArgumentDirection.Output);
                    var inputs = GetDebugValues(defs, dataObject, out invokeErrors);
                    errors.MergeErrors(invokeErrors);
                    debugState.Outputs.AddRange(inputs);
                }
                if (stateType == StateType.End)
                {
                    debugState.NumberOfSteps = dataObject.NumberOfSteps;
                }

                if (stateType == StateType.Start)
                {
                    debugState.ExecutionOrigin            = dataObject.ExecutionOrigin;
                    debugState.ExecutionOriginDescription = dataObject.ExecutionOriginDescription;
                }

                if (dataObject.IsDebugMode() || dataObject.RunWorkflowAsync && !dataObject.IsFromWebServer)
                {
                    var debugDispatcher = _getDebugDispatcher();
                    if (debugState.StateType == StateType.End)
                    {
                        while (!debugDispatcher.IsQueueEmpty)
                        {
                            Thread.Sleep(100);
                        }
                        debugDispatcher.Write(debugState, dataObject.RemoteInvoke, dataObject.RemoteInvokerID, dataObject.ParentInstanceID, dataObject.RemoteDebugItems);
                    }
                    else
                    {
                        debugDispatcher.Write(debugState);
                    }
                }
            }
        }
        public void DispatchDebugState(IDSFDataObject dataObject, StateType stateType, bool hasErrors, string existingErrors, out ErrorResultTO errors, DateTime? workflowStartTime = null, bool interrogateInputs = false, bool interrogateOutputs = false)
        {
            errors = new ErrorResultTO();
            if(dataObject != null)
            {
                Guid parentInstanceId;
                Guid.TryParse(dataObject.ParentInstanceID, out parentInstanceId);
                IDataListCompiler compiler = DataListFactory.CreateDataListCompiler();
                bool hasError = dataObject.Environment.HasErrors();
                var errorMessage = String.Empty;
                if(hasError)
                {
                    errorMessage = dataObject.Environment.FetchErrors();
                }
                if(String.IsNullOrEmpty(existingErrors))
                {
                    existingErrors = errorMessage;
                }
                else
                {
                    existingErrors += Environment.NewLine + errorMessage;
                }
                var debugState = new DebugState
                {
                    ID = dataObject.OriginalInstanceID,
                    ParentID = parentInstanceId,
                    WorkspaceID = dataObject.WorkspaceID,
                    StateType = stateType,
                    StartTime = workflowStartTime ?? DateTime.Now,
                    EndTime = DateTime.Now,
                    ActivityType = ActivityType.Workflow,
                    DisplayName = dataObject.ServiceName,
                    IsSimulation = dataObject.IsOnDemandSimulation,
                    ServerID = dataObject.ServerID,
                    OriginatingResourceID = dataObject.ResourceID,
                    OriginalInstanceID = dataObject.OriginalInstanceID,
                    Server = string.Empty,
                    Version = string.Empty,
                    SessionID = dataObject.DebugSessionID,
                    EnvironmentID = dataObject.EnvironmentID,
                    ClientID = dataObject.ClientID,
                    Name = stateType.ToString(),
                    HasError = hasErrors || hasError,
                    ErrorMessage = existingErrors
                };

                if(interrogateInputs)
                {
                    ErrorResultTO invokeErrors;
                    var defs = compiler.GenerateDefsFromDataListForDebug(FindServiceShape(dataObject.WorkspaceID, dataObject.ResourceID), enDev2ColumnArgumentDirection.Input);
                    var inputs = GetDebugValues(defs, dataObject, out invokeErrors);
                    errors.MergeErrors(invokeErrors);
                    debugState.Inputs.AddRange(inputs);
                }
                if(interrogateOutputs)
                {
                    ErrorResultTO invokeErrors;
                    
                    var defs = compiler.GenerateDefsFromDataListForDebug(FindServiceShape(dataObject.WorkspaceID, dataObject.ResourceID), enDev2ColumnArgumentDirection.Output);
                    var inputs = GetDebugValues(defs, dataObject, out invokeErrors);
                    errors.MergeErrors(invokeErrors);
                    debugState.Outputs.AddRange(inputs);
                }
                if(stateType == StateType.End)
                {
                    debugState.NumberOfSteps = dataObject.NumberOfSteps;
                }

                if(stateType == StateType.Start)
                {
                    debugState.ExecutionOrigin = dataObject.ExecutionOrigin;
                    debugState.ExecutionOriginDescription = dataObject.ExecutionOriginDescription;
                }

                if(dataObject.IsDebugMode() || (dataObject.RunWorkflowAsync && !dataObject.IsFromWebServer))
                {
                    var debugDispatcher = GetDebugDispatcher();
                    if(debugState.StateType == StateType.End)
                    {
                        while(!debugDispatcher.IsQueueEmpty)
                        {
                            Thread.Sleep(100);
                        }
                        debugDispatcher.Write(debugState, dataObject.RemoteInvoke, dataObject.RemoteInvokerID, dataObject.ParentInstanceID, dataObject.RemoteDebugItems);
                    }
                    else
                    {
                        debugDispatcher.Write(debugState);
                    }
                }
            }
        }
        /// <summary>
        /// Main execution function for AutonomousService.
        /// </summary>
        public void Execute(Object source, ElapsedEventArgs e)
        {
            // Don't execute if existing execution is not complete
            if (!Monitor.TryEnter(executeLock))
            {
                return;
            }

            // TODO debugging - delete
            //Console.WriteLine("The Elapsed event was raised at {0:HH:mm:ss.fff}", e.SignalTime);

            // this is for when we're running out of time and just roll back to only gps and hope for the best
            if (!this.panic && (DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() - this.startTimeStamp.ToUnixTimeMilliseconds() > this.fuckItGoForItCountDown))
            {
                StatusHandler.SendDebugAIPacket(Status.AIS_LOG, "Starting hail mary");
                this.panic = true;
                this.driveContext.HandleFinalCountDown();
            }

            // If detected an obstacle within the last 5 seconds, continue straight to clear obstacle
            if (IsLastObstacleWithinInterval(OBSTACLE_WATCHDOG_MILLIS))
            {
                StatusHandler.SendSimpleAIPacket(Status.AIS_OUT_WATCHDOG);
                Console.WriteLine("Watchdog");

                // If more than 0.5 seconds have passed since last event, it's safe to start issuing drive
                // commands - otherwise race condition may occur when continually detecting an obstacle
                if (!IsLastObstacleWithinInterval(CLEAR_OBSTACLE_DELAY_MILLIS))
                {
                    this.driveContext.Drive(DriveCommand.Straight(Speed.CLEAR_OBSTACLE));
                }

                return;
            }

            // Get DriveCommand from current drive state, issue DriveCommand
            DriveCommand driveCommand = this.driveContext.FindNextDriveCommand();

            this.driveContext.Drive(driveCommand);

            // If state change is required, change state
            StateType nextState = this.driveContext.GetNextStateType();

            if (this.driveContext.IsStateChangeRequired(nextState))
            {
                Console.WriteLine("Switching from state: " + this.driveContext.StateType.ToString() + " to: " + nextState.ToString());

                this.driveContext.ChangeState(nextState);
            }

            Monitor.Exit(executeLock);
        }
示例#30
0
 public override string ToString()
 {
     return(stateType.ToString());
 }
            /// <summary>
            /// Get the unique state name for the given {type, provider} tuple.
            /// Note that this name is used by the underlying persistence stream of the corresponding <see cref="DiagnosticState"/> to Read/Write diagnostic data into the stream.
            /// If any two distinct {type, provider} tuples have the same diagnostic state name, we will end up sharing the persistence stream between them, leading to duplicate/missing/incorrect diagnostic data.
            /// </summary>
            private static ValueTuple<string, VersionStamp> GetUniqueDiagnosticStateNameAndVersion(StateType type, ProviderId providerId, DiagnosticAnalyzer provider)
            {
                Contract.ThrowIfNull(provider);

                // Get the unique ID for given diagnostic analyzer.
                // note that we also put version stamp so that we can detect changed provider
                var providerType = provider.GetType();
                var location = providerType.Assembly.Location;

                return ValueTuple.Create(UserDiagnosticsPrefixTableName + "_" + type.ToString() + "_" + providerType.AssemblyQualifiedName, GetProviderVersion(location));
            }
示例#32
0
文件: Events.cs 项目: rihardsk/Chat
 public override string ToString()
 {
     return("[" + Id + "]" + "[" + Type.ToString() + "]" + StateType.ToString());
 }
示例#33
0
        public void WriteXml(XmlWriter writer)
        {
            //------Always log these for reconstruction------------
            writer.WriteAttributeString("DisplayName", DisplayName);

            writer.WriteAttributeString("ID", ID.ToString());

            writer.WriteAttributeString("OriginalInstanceID", OriginalInstanceID.ToString());

            writer.WriteAttributeString("ParentID", ParentID.ToString());

            writer.WriteAttributeString("ServerID", ServerID.ToString());

            writer.WriteAttributeString("StateType", StateType.ToString());

            writer.WriteElementString("HasError", HasError.ToString());

            writer.WriteAttributeString("SessionID", SessionID.ToString());

            if (HasError)
            {
                writer.WriteElementString("ErrorMessage", ErrorMessage);
            }
            //-----------------------------

            var settings = WorkflowLoggger.LoggingSettings;

            //Version
            if (settings.IsVersionLogged && !string.IsNullOrWhiteSpace(Version))
            {
                writer.WriteElementString("Version", Version);
            }

            //Type
            if (settings.IsTypeLogged)
            {
                writer.WriteElementString("Name", Name);
                writer.WriteElementString("ActivityType", ActivityType.ToString());
            }

            //Duration
            if (settings.IsDurationLogged)
            {
                if (Duration != default(TimeSpan))
                {
                    writer.WriteElementString("Duration", DurationString);
                }
            }

            //DateTime
            if (settings.IsDataAndTimeLogged)
            {
                if (StartTime != DateTime.MinValue)
                {
                    writer.WriteElementString("StartTime", StartTime.ToString("G"));
                }
                if (EndTime != DateTime.MinValue)
                {
                    writer.WriteElementString("EndTime", EndTime.ToString("G"));
                }
            }


            //Input
            if (settings.IsInputLogged && Inputs.Count > 0)
            {
                writer.WriteStartElement("Inputs");
                writer.WriteAttributeString("Count", Inputs.Count.ToString(CultureInfo.InvariantCulture));

                var inputSer = new XmlSerializer(typeof(DebugItem));
                foreach (var other in Inputs)
                {
                    inputSer.Serialize(writer, other);
                }
                writer.WriteEndElement();
            }

            //Output
            if (settings.IsOutputLogged && Outputs.Count > 0)
            {
                writer.WriteStartElement("Outputs");
                writer.WriteAttributeString("Count", Outputs.Count.ToString(CultureInfo.InvariantCulture));

                var outputSer = new XmlSerializer(typeof(DebugItem));
                foreach (var other in Outputs)
                {
                    outputSer.Serialize(writer, other);
                }
                writer.WriteEndElement();
            }

            //StartBlock
            if (IsFirstStep())
            {
                if (ExecutionOrigin != ExecutionOrigin.Unknown)
                {
                    writer.WriteElementString("ExecutionOrigin", ExecutionOrigin.ToString());
                }
                if (!string.IsNullOrWhiteSpace(ExecutingUser))
                {
                    writer.WriteElementString("ExecutingUser", ExecutingUser);
                }
            }

            //EndBlock

            if (IsFinalStep())
            {
                writer.WriteElementString("NumberOfSteps", NumberOfSteps.ToString(CultureInfo.InvariantCulture));
            }
        }